2013-04-20 186 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