在MySQL中级联SELECT语句

时间:2017-10-01 11:55:50

标签: mysql select

我有一个如下所示的表格,其中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

由于

1 个答案:

答案 0 :(得分:0)

评论时间有点长。

你的问题是:“是否有一种简单的方法来级联SELECT命令?”

你的问题的答案是一个简单的“不” - 至少在MySQL 8.0之前。您正在存储分层数据。 SQL(通常)提供了处理此类数据的机制。 MySQL目前不支持任何一种。

如果您的层次结构不是太深,那么在PHP中完成工作可能是最简单的解决方案。否则,您可能需要考虑构建信息的其他方法。 Here是开始使用的好地方。