Похоже, что у вас есть отношения многие-к-одному, и вы не учитываете это при выполнении ваших соединений ANSI-89 (для 1989 года). В результате вы получаете несколько строк на сотрудника, поскольку в таблицах DEPARTMENT
и PROJECT
.
объединены несколько строк. Учитывая, что в SELECT
I вы ссылаетесь только на EMPLOYEE
. предположим, вы действительно хотите EXISTS
:
SELECT e.Fname,
e.Minit,
e.Lname
FROM dbo.EMPLOYEE E
WHERE E.Dno = 5 --Inferred as p.Dnum=5 and p.Dnum=d.Dnumber and d.Dnumber=e.Dno. Thus e.Dno = 5
AND EXISTS (SELECT 1
FROM dbo.DEPARTMENT D
JOIN dbo.PROJECT P ON D.Dnumber = P.Dnum
WHERE D.Dnumber = E.Dno);
Если, однако, вам все равно, есть ли у сотрудника отдел (или проект), тогда будет хорошо следующее:
SELECT e.Fname,
e.Minit,
e.Lname
FROM dbo.EMPLOYEE E
WHERE E.Dno = 5;