2016-04-29 51 views
0

我在一个SQL查询工作做到以下几点: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

+0

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

回答

0

你的加入是错误的。

您应该只加入项目,work_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 
+0

@ Walter_Ritzel更有道理,非常感谢! – jaxicab