2016-04-29 2 views
0

Я работаю на запрос SQL, чтобы сделать следующее:SQL Multiple внутренние соединения

Для каждого проекта, получить номер проекта, название проекта, а количество сотрудников из отдела 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

Ваш присоединяется неверны.

Вы должны присоединяться только к проектам, 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 
+0

@ Walter_Ritzel делает гораздо больше смысла, спасибо много! – jaxicab

Смежные вопросы