2013-04-20 2 views
0

Я после двух таблиц (DEPT и EMP):UNION Query Error

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 объединены в столбцах Name, которые не нужны. Я полагаю, что для этого должно быть четыре столбца query. – Tan

+0

@AaK: №. Объединение объединяет таблицы результатов с ** идентичными ** столбцами в одну таблицу результатов с одинаковым расположением столбцов. Идентификатор и имя в этом случае. –

+0

@AaK Если вам нужно четыре столбца, тогда вы должны использовать объединения of union – sivareddy

0

Удалить ORDER BY положение в первом запросе.

Так изменится:

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

Должно работать.

+0

Не работает! :( – Tan