Oracle ЗАКАЗАТЬ В СОЮЗЕ - PullRequest
       1

Oracle ЗАКАЗАТЬ В СОЮЗЕ

0 голосов
/ 11 ноября 2018

У меня есть этот запрос:

SELECT p.prenume||' '||p.nume ||' '||LOWER(REVERSE(c.titlu_curs)) AS "Info"
from profesori p JOIN didactic d ON d.id_prof = p.id_prof 
JOIN cursuri c ON d.id_curs = c.id_curs 
UNION
SELECT p.prenume||' '||p.nume||' ' AS "Info" from profesori p 
JOIN didactic d ON p.id_prof NOT IN 
(SELECT id_prof from didactic)
JOIN cursuri c ON c.id_curs NOT IN (SELECT id_curs from didactic) ORDER BY p.nume

Как я могу заказать по номеру? Я получаю эту ошибку «P». «NUME»: неверный идентификатор » Я знаю, что могу заказать по Псевдониму "Инфо", но как я могу заказать только по p.nume?

1 Ответ

0 голосов
/ 11 ноября 2018

Как я могу заказать по номеру?

С запросами UNION мы можем упорядочивать только по именованным столбцам в проекции первого подзапроса. Ваш запрос содержит только nume как часть объединенного столбца, следовательно, ошибка ORA-00904.

Сортировка запроса UNION по столбцам в наборе результатов означает, что вы можете отсортировать по псевдониму столбца ...

order by "Info"

... что означает, что он будет эффективно сортироваться по prenume, nume, LOWER(REVERSE(c.titlu_curs)).

Альтернативное решение - полезное, когда вы не налагаете псевдоним на столбец сортировки - это использовать позиционную нотацию

order by 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...