【问题标题】:SQL Multiple inner joinsSQL 多重内连接
【发布时间】:2016-04-29 17:11:53
【问题描述】:

我正在处理一个 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

【问题讨论】:

  • 请附上样本数据和预期输出

标签: mysql join


【解决方案1】:

您的连接错误。

您应该只加入项目、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

【讨论】:

  • @Walter_Ritzel 说得更明白了,非常感谢!
猜你喜欢
  • 2021-05-07
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
相关资源
最近更新 更多