Не может иметь квалификатор в списке выбора при выполнении ключевого слова JOIN w / USING - PullRequest
4 голосов
/ 23 мая 2010

Я смотрю на практический тест, в котором нет объяснений о правильных ответах. Вопрос, который меня смущает, в основном спрашивает, почему следующий оператор SQL никогда не может работать:

SELECT oi.order_id, product_jd, order_date
FROM order_items oi JOIN orders o
USING(order_id);

Ответ, который он дал, был: «Оператор не будет выполнен, потому что часть столбца предложения USING не может иметь квалификатор в списке SELECT»

Может кто-нибудь уточнить это? Я довольно тупой.

1 Ответ

11 голосов
/ 23 мая 2010

Он жалуется на квалификатор oi:

SELECT oi.order_id, product_jd, order_date
       ^^^

Oracle не разрешает квалификаторы в сочетании с объединением using.Самый ясный выход - использовать обычное соединение:

SELECT oi.order_id, product_jd, order_date
FROM order_items oi 
JOIN orders o ON o.order_id = oi.order_id

Вы также можете опустить классификатор.Оператор using сообщает Oracle, что, хотя есть два поля с именем order_id, они оба равны:

SELECT order_id, product_jd, order_date
FROM order_items oi JOIN orders o
USING(order_id)
...