MySQl中的多级/级别查询 - 是否需要额外的外键?

时间:2015-11-25 11:41:44

标签: mysql

假设我有3张桌子:

  • 部门,每个部门都有0..n
    • 工作,每个工作都有0..n

鉴于某个部门,我如何让所有在该部门工作的人员?我可以用一个SELECT来做吗?

我已将a fiddle设置为一些示例数据,但我无法制定正确的查询。

可以用一些JOIN魔法来完成吗?或者我是否需要在peeps表中添加外键,并指向department_id

1 个答案:

答案 0 :(得分:1)

一个简单的连接

SELECT people.*
FROM departments 
INNER JOIN jobs ON departments.deperatment_id = jobs.deperatment_id
INNER JOIN people ON jobs.job_id = people.job_id
WHERE departments.deperatment_id = 1

您需要将连接条件中的列名修改为表中使用的列名。

请注意,SQL小提琴上的示例表没有任何索引。添加这些对性能非常重要。