两表联接与子查询?

时间:2018-11-11 02:27:39

标签: sql oracle oracle-apex

因此,我正在练习以提高SQL技能,并且需要修改查询以添加一个子查询,该子查询在CUSTOMERS表中查找客户ID的存在。练习还注意到,这是一个相关的子查询,因此您必须将子查询中的客户ID与外部查询中的客户ID进行匹配。本练习部分的标题是“带有子查询的两表联接”。经过研究和尝试了几个小时之后,我已经耗尽了所有资源,只有一个。任何帮助将非常感激! (我为此使用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 :(得分:2)

使用存在,您可以检查是否存在,

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
);