Соединение двух таблиц с подзапросом? - PullRequest
0 голосов
/ 11 ноября 2018

Итак, я работаю над упражнением, чтобы улучшить свои навыки SQL, и мне нужно изменить свой запрос, чтобы добавить подзапрос, который ищет наличие идентификатора клиента в таблице CUSTOMERS. В упражнении также отмечается, что это коррелированный подзапрос, поэтому вам нужно будет сопоставить идентификатор клиента из подзапроса с идентификатором клиента во внешнем запросе. Название раздела этого упражнения называется «Соединение двух таблиц с подзапросом». После исследования и попытки в течение нескольких часов, я исчерпал все свои ресурсы, кроме одного. Любая помощь приветствуется! (Я использую Oracle Apex для этого.)

SELECT ORDER_ID, ORDER_MODE, CUSTOMER_ID, PRODUCT_ID
FROM ORDERS
NATURAL JOIN ORDER_ITEMS;

Customers Table

ORDER_ITEMS Table

ORDERS Table

PRODUCT_DESCRIPTIONS Table

1 Ответ

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

Используя существует, вы можете проверить существование,

SELECT O.ORDER_ID, O.ORDER_MODE, O.CUSTOMER_ID, OI.PRODUCT_ID
FROM ORDERS O
INNER JOIN ORDER_ITEMS OI on O.ORDER_ID=OI.ORDER_ID
WHERE EXISTS(
SELECT * FROM CUSTOMERS C
WHERE O.CUSTOMER_ID=C.CUSTOMER_ID
);

Это сделает второй,

SELECT O.ORDER_ID, O.ORDER_MODE, O.CUSTOMER_ID, OI.PRODUCT_ID,P.TRANSLATED_NAME
FROM ORDERS O
INNER JOIN ORDER_ITEMS OI on O.ORDER_ID=OI.ORDER_ID
INNER JOIN PRODUCT_DESCRIPTIONS P on P.PRODUCT_ID=OI.PRODUCT_ID
WHERE EXISTS(
SELECT * FROM CUSTOMERS C
WHERE O.CUSTOMER_ID=C.CUSTOMER_ID
);
...