Исключение присоединиться Oracle - PullRequest
0 голосов
/ 04 апреля 2020
              SELECT a.product_name
                   , a.product_price
                   , c.restaurant_id
                   , c.restaurant_name
                   , c.phone_number
                FROM MENU a 
RIGHT EXCEPTION JOIN RESTAURANT c 
                  ON a.restaurant_id=c.restaurant_id 
            ORDER BY a.restaurant_id
                   ;

я получаю сообщение об ошибке

Ответ: ORA-00905 указан для указания неверно сформированного оператора, где синтаксический анализатор Oracle указывает, что в операторе есть пропущенное ключевое слово.

В документах Oracle это указывается на ошибку ora-00905:

Причина: отсутствует обязательное ключевое слово. ... При обнаружении ORA-00905 необходимо исправить синтаксис, так как отсутствует ключевое слово.

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Нет такой вещи как exception join в Oracle. Что касается, только DB2 поддерживает этот синтаксис.

Если вам нужны все меню без ресторана, я бы предложил not exists:

select m.*
from menu m
where not exists (select 1 from restaurant r where r.restaurant_id = m.restaurant_id)
order by m.restaurant_id

Вы также можете express это с anti- left join:

select m.*
from menu m
left join restaurant r on r.restaurant_id = m.restaurant_id 
where r.restaurant_id is null
order by m.restaurant_id    

С другой стороны, если вы хотите, чтобы все рестораны без меню, вы можете просто инвертировать таблицы в запросе:

select r.*
from restaurant r
where not exists (select 1 from menu m where r.restaurant_id = m.restaurant_id)
order by r.restaurant_id
0 голосов
/ 04 апреля 2020

Oracle не поддерживает EXCEPTION JOIN. Я тоже не думаю, что это синтаксис ANSI. Это должно быть из какой-то другой разновидности базы данных.

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