mysql - SQL 多重内连接

标签 mysql join

我正在处理 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。我认为我需要以某种方式加入项目和员工表,但我不确定

附件是我的架构

ER Diagram

最佳答案

你的连接是错误的。

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

相关文章:

php - 如何使用foreach输出将多条记录插入mysql?

mysql - 从 mysqldump 中检索最后 N 行

mysql - 比较 MySQL 中的二进制值

php - 使用 mysql php 查找打开和关闭状态

php - 从左连接返回 mysql 查询中的最后一行

mysql - 使用 SQL 中的其他表更新/插入表

php - 使用 like 语句仅返回出现 x 次的命中

javascript - Lodash:通过给定键连接值

mysql - 关联表而不扭曲数据

mysql - 如何在 MySQL 中连接非规范化表?