我有一个包含以下表格的数据库
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行。
非常感谢任何帮助。
答案 0 :(得分:0)
使用LEFT JOIN
,而不是UNION
:
SELECT e.FIRST_NAME, e.LAST_NAME, e.ADDRESS, d.DEPT_NAME
FROM EMPLOYEE e
LEFT JOIN DEPARTMENT d ON e.SSNO = d.MGRSSNO