我有一个如下所示的表格,其中name是一个分支名称,每个分支都可以有一个父级,它引用回同一个表中的id列。在这个例子中,利物浦'曼彻斯特'和'切斯特'他们都是“西北”的孩子,他们本身就是“大师”的孩子。
id name parent_id
1 Master 0
2 North West 1
3 Liverpool 2
4 Manchester 2
5 Chester 2
然后我有一个branchSettings表,如下所示:
id branch_id settingKey settingValue
1 1 waitTime 5
2 1 timeOutTime 10
3 2 waitTime 7
4 5 waitTime 15
分支1(' Master')将始终拥有每个设置,因为它是主设备,并且每个孩子都应该继承这些设置,但是如果他们愿意,每个分支都可以覆盖默认设置。例如,' North West' (id 2)已覆盖等待时间'从5到7,应该级联到利物浦'曼彻斯特'和切斯特'但是'切斯特' (id 5)决定等待时间'应该是15 - 超越西北'和' Master'。
不是在PHP中编写代码,而是有一种简单的方法可以级联SELECT命令,我可以说...从表中选择branch_id = 5的每个设置并返回每个Master设置,其中不存在覆盖,但然后覆盖值他们在哪里?所以它返回:
id branch_id settingKey settingValue
2 5 timeOutTime 10
3 5 waitTime 15
由于
答案 0 :(得分:0)
评论时间有点长。
你的问题是:“是否有一种简单的方法来级联SELECT命令?”
你的问题的答案是一个简单的“不” - 至少在MySQL 8.0之前。您正在存储分层数据。 SQL(通常)提供了处理此类数据的机制。 MySQL目前不支持任何一种。
如果您的层次结构不是太深,那么在PHP中完成工作可能是最简单的解决方案。否则,您可能需要考虑构建信息的其他方法。 Here是开始使用的好地方。