所以我正在使用oracle application express,到目前为止我遇到了查询问题。我一直收到错误,查询没有正确结束。我知道你需要在正确的位置输入括号。也许我没有做到这一点?无论如何,我觉得我有概念/身体,但有些东西略有偏差。我需要使用至少3个子查询。这是嵌套查询:
settings
所以我不确定是什么问题,但实在令人沮丧。附:我是这一切的新手。
答案 0 :(得分:0)
找出按特定订购的产品名称 客户
您不需要"嵌套子查询",您需要的是JOINS
。
orders
表格会有一列标识哪个customer
,order_items
表格会识别每个项目引用的order number
,并且还会标识哪个{ {1}}也是。所以我们想要将这些信息加在一起,我将从重新安排你的SQL开始(相当多)
product number
所以,重新安排了很多表格,我有一些未知的问题需要解决(问号)这些表格中存在哪些列名称可以让我将它们连接在一起,因为我不知道知道所有这些都是猜测:
SELECT C.CUSTOMER_ID
FROM DEMO_CUSTOMERS C
inner join DEMO_ORDERS O on C.?? = O.??
inner join DEMO_ORDER_ITEMS OI on O.?? = OI.??
inner join DEMO_PRODUCT_INFO PI on OI.?? = PI.??
SELECT PI.PRODUCT_NAME FROM PI
SELECT O.ORDER_ID
SELECT OI.PRODUCT_ID FROM
WHERE IN ('Willam Hartsfield')
;
所以:客户>订单>订购商品>产品信息现在"相关"彼此通过SELECT C.CUSTOMER_ID
FROM DEMO_CUSTOMERS C
inner join DEMO_ORDERS O on C.ID = O.CUSTOMER_ID
inner join DEMO_ORDER_ITEMS OI on O.ID = OI.ORDER_ID
inner join DEMO_PRODUCT_INFO PI on OI.PRODUCT_ID = PI.ID
现在where子句需要修复,即
joins
像他一样:
WHERE some-column-name-here IN ('Willam Hartsfield')
请注意,您也可以使用:WHERE C.NAME IN ('Willam Hartsfield')
现在我们现在需要的是额外的列,确保在执行此操作时包含表别名:
WHERE C.NAME = 'Willam Hartsfield'
这应该更接近你的需要。
答案 1 :(得分:0)
以下是嵌套查询的解决方案。查询缺少右括号。这可以通过格式化查询来完成。
- 适用于嵌套查询
SELECT product_name FROM demo_product_info WHERE product_id IN
(
SELECT product_id FROM demo_order_items WHERE order_id IN
(SELECT order_id FROM demo_orders WHERE customer_id IN
(SELECT DISTINCT c.customer_id FROM demo_customers WHERE cust_name IN ('Willam Hartsfield')))
);
另外,如上所述@User_by_Already最好的解决方案是在表上写入join子句。
- 加入查询
SELECT
dpi.product_name
FROM
demo_customers dc, demo_orders do,
demo_order_items doi, demo_product_info dpi
WHERE
dc.customer_id = do.customer_id
AND do.order_id = doi.order_id
AND doi.product_id = dpi.product_id
AND dc.cust_name IN ('Willam Hartsfield');