У меня есть база данных, которая имеет следующие таблицыоракул: SQL союз запрос
EMPLOYEE:[FIRST_NAME, MID_INIT, LAST_NAME, SSNO, BDATE, ADDRESS, GENDER, SALARY, SUPSSNO, DNO]
DEPARTMENT:[DEPT_NAME, DEPT_NO, MGRSSNO, MGR_START_DATE]
DEPARTMENT.MGRSSNO is a foreign key of EMPLOYEE.SSNO
Мне нужно создать запрос с использованием UNION, чтобы отобразить имена всех сотрудников, и если они являются менеджером отдела, то dept_name.
Вот что я имею
SELECT E.FIRST_NAME, E.LAST_NAME, E.ADDRESS, D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.SSNO=D.MGRSSNO
UNION
SELECT E.FIRST_NAME, E.LAST_NAME, E.ADDRESS, D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D;
кроме я получаю 36 строк (9 сотрудников х 4 отделов) вместо 9, что я должен получать.
Любая помощь была бы принята с благодарностью.
Ваш второй подзапрос уже не условие соединения, поэтому он производит полный перекрестное произведение двух таблиц. – Barmar
Вы должны использовать 'LEFT JOIN', а не' UNION'. – Barmar
Вы должны использовать явные 'JOIN' вместо условий неявного соединения старого стиля в разделе' WHERE' –