SQL多个内连接

时间:2016-04-29 17:11:53

标签: mysql join

我正在进行SQL查询以执行以下操作:

对于每个项目,检索项目编号,项目名称以及从事项目的部门5的员工数量。

到目前为止,我的查询如下所示:

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中的员工数量返回为1,但是它返回NULL。我认为我需要以某种方式加入项目和员工表,但我不确定

附件是我的架构

ER Diagram

1 个答案:

答案 0 :(得分:0)

您的加入是错误的。

您应该只加入projects,works_on和employee表。

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