2013-04-20 108 views
0

我有以下两个表(DEPT和EMP):UNION查询错误

DEPT 

DEPTNO,DNAME,LOC 

EMP 

EMPNO, ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO 

我执行以下查询: “使用UNION,以显示部门号码和姓名,员工编号和名称选择 适当的列标题并按名称按升序排序。“

这里是我的查询:

SELECT Deptno, Dname 
FROM DEPT 
ORDER BY Dname ASC 
UNION 
SELECT EMPNO,ENAME 
FROM EMP 
ORDER BY ENAME ASC; 

我不知道为什么,我发现了以下错误:

UNION * ERROR at line 4: ORA-00933: SQL command not properly ended.

谁能告诉我什么是错在这里?

感谢

回答

2

试试这个

SELECT Deptno AS ID, Dname AS NAME 
FROM DEPT 
UNION 
SELECT EMPNO AS ID,ENAME AS NAME 
FROM EMP 
ORDER BY NAME ASC 

编辑

要显示四列检查下面的查询使用连接

SELECT E.EMPNO ,E.ENAME ,D.Deptno , D.Dname 
FROM DEPT D 
INNER JOIN 
EMP E ON E.DeptNO = D.DeptNo 
ORDER BY E.ENAME ASC 
+0

此查询正在运行并且只生成ID和NAME列 Deptnp和EMpNo在ID列和Dname和Ename组合在名称列中,这是不需要的 我想应该有四列查询 – Tan 2013-04-20 09:57:05

+0

@AaK:No. Union将具有**相同**列的结果表与具有相同列布局的一个结果表组合在一起,在此情况下为ID和名称 – 2013-04-20 10:05:47

+0

@AaK如果您需要四列,则应该使用连接工会 – sivareddy 2013-04-20 10:06:02

0

在第一个查询中删除ORDER BY条款。

所以更改为:

SELECT Deptno, Dname 
FROM DEPT 
UNION 
SELECT EMPNO,ENAME 
FROM EMP 
ORDER BY Dept.Dname, Emp.Ename ASC; 

应该工作。

+0

不工作! :( – Tan 2013-04-20 09:48:25