我正在处理 SQL 查询来执行以下操作:
对于每个项目,检索项目编号、项目名称以及部门 5 中从事该项目的员 worker 数。
到目前为止,我的查询如下所示:
SELECT p.PNO
, p.PNAME
, COUNT( DISTINCT w.ESSN) '# employees from Dept. 5'
FROM project p
JOIN department d
ON d.DNO = p.DNO
JOIN employee e
ON e.DNO = d.DNO
JOIN works_on w
ON w.ESSN = e.SSN
WHERE e.DNO LIKE '5'
AND p.PNO LIKE 10
我正在测试 10 号项目,该项目应将第 5 部门的员 worker 数返回为 1,但它返回 NULL。我认为我需要以某种方式加入项目和员工表,但我不确定
附件是我的架构
最佳答案
你的连接是错误的。
您应该仅加入项目、works_on 和员工表。
SELECT p.PNO, p.PNAME, COUNT( DISTINCT w.ESSN) '# employees from Dept. 5'
FROM project p
INNER JOIN works_on w
ON p.pno = w.pno
INNER JOIN employee e
ON w.essn = e.essn
WHERE e.DNO LIKE '5' AND p.PNO LIKE 10
并且您错过了最后的分组:
GROUP BY p.PNO, p.PNAME
关于mysql - SQL 多重内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944006/