DISTINCT приводит к ORA-01791: не выбранное выражение - PullRequest
24 голосов
/ 01 апреля 2011
select DISTINCT a.FNAME||' '||a.LNAME
   from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
   where C.firstname='BECCA'
      and C.lastname='NELSON'
      and a.AUTHORID=ba.AUTHORID
      and b.ISBN=bA.ISBN
   order by a.LNAME

дает ORA-01791: не выражение SELECTed, но работает без DISTINCT.

Как заставить его работать?

1 Ответ

25 голосов
/ 01 апреля 2011

Просто добавьте LNAME в качестве отдельного столбца в предложении select:

SELECT full_name
FROM (
 select DISTINCT a.FNAME||' '||a.LNAME AS full_name, a.LNAME
 from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
 where C.firstname='BECCA'
   and C.lastname='NELSON'
   and a.AUTHORID=ba.AUTHORID
   and b.ISBN=bA.ISBN
 )
order by a.LNAME

Если вам нужен только первый столбец в выводе, вы можете поместить все это в подзапрос.

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