ЗАКАЗАТЬ ПО И СОЮЗУ в выпуске SQLPLUS - PullRequest
0 голосов
/ 28 октября 2018

Я выдаю следующую ошибку: «ORA-01785: элемент ORDER BY должен быть номером выражения SELECT-списка», когда я пытаюсь выбрать id_prof, используя «order by» при создании объединения между столбцами из разных таблиц.

Команда выглядит следующим образом:

select substr(nume, 1, 1)||'.'||regexp_replace(prenume, '[aeiou]', null, 1, 0, 'i') as "Rododendron" 
from studenti 
union 
select ceil(sqrt(to_number(substr (id_prof, 2, 1))*2)) as "Fata de con" 
from profesori 
where grup_didactic = 'Lect' 
order by to_number(substr (id_prof, 2, 1)) desc;

Таблицы представлены на следующих рисунках: FirstPicture SecondPicture

Я хотел бы иметь в конце два столбца.

Первый должен содержать первую букву от «цифры», соединенную с «.»и "prenume" без гласных (столбец с именем "Rododendron").

Во втором я хочу получить квадратный корень, округленный сверху, от двойного числа id_prof (столбец с именем Fata de con), для всего, что можно найти в «profesori», где grup_didactic= 'lector' и все упорядочено desc после id_prof.

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 28 октября 2018

Oracle говорит, что вы не можете отсортировать результат по столбцу, который не содержится в списке столбцов SELECT;например, в этом простом примере схемы Скотта:

SQL> select ename from emp
  2  union
  3  select dname from dept
  4  order by substr(ename, 1, 3);
order by substr(ename, 1, 3)
         *
ERROR at line 4:
ORA-01785: ORDER BY item must be the number of a SELECT-list expression

Я бы сказал, что сортировка - это наименьшая из ваших проблем в настоящее время.UNION не вернет два столбца;удалите ORDER BY и убедитесь сами - если вам повезет , вы получите один столбец.

Это то, что вы делаете сейчас:

select col from studenti
union
select another_col from profesori

хотя вы хотите получить предложение

select col, another_col
from ...

FROM сложно, так как кажется, что вы выбираете из двух разных таблиц.Можете ли вы присоединиться к ним, чтобы запрос выглядел как второй вариант?Если нет, вы всегда можете сделать декартово произведение, но это, скорее всего, будет неправильный результат.

Было бы полезно, если бы вы предоставили образец входных данных и объяснили, как получить результат из этого ввода.

...