oracle:sql union查询

时间:2013-11-19 22:27:47

标签: sql oracle

我有一个包含以下表格的数据库

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行。

非常感谢任何帮助。

1 个答案:

答案 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