首页 > 试题广场 >

34.返回购买 prod_id 为 BR01 的产品的所有顾

[单选题]
34.返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(一)
你想知道订购 BR01 产品的日期,有表OrderItems代表订单商品信息表,prod_id为产品id;Orders表代表订单表有cust_id代表顾客id和订单日期order_date;Customers表含有cust_email 顾客邮件和cust_id顾客id
OrderItems表
prod_id order_num
BR01 a0001
BR01 a0002
BR02
a0003
BR02
a0013

Orders表
order_num cust_id order_date
a0001 cust10 2022-01-01 00:00:00
a0002 cust1 2022-01-01 00:01:00
a0003 cust1
2022-01-02 00:00:00
a0013 cust2
2022-01-01 00:20:00

Customers表代表顾客信息,cust_id为顾客id,cust_email为顾客email
【问题】返回购买 prod_id 为BR01 的产品的所有顾客的电子邮件(Customers 表中的 cust_email),结果无需排序。
提示:这涉及 SELECT 语句,最内层的从 OrderItems 表返回 order_num,中间的从 Customers 表返回 cust_id。

【示例结果】
返回顾客email cust_email
cust_email
cust10@cust.com
cust1@cust.com
【示例解析】
产品id为BR01的订单a0001和a002的下单顾客cust10和cust1的顾客email cust_email分别是:cust10@cust.com 、cust1@cust.com
  • select cust_email
    from OrderItems as oi join Orders as o join Customers as c
    on oi.order_num = o.order_num and o.cust_id = c.cust_id
    where prod_id='BR01';
  • select cust_email from OrderItems where prod_id='BR01'
  • select
    cust_email
    from Orders q1 join OrderItems q2
    on q1.order_num = q2.order_num
    join Customers q3
    on q1.cust_id=q3.cust_id
  • select cust_email
    from Customers c left join Orders o on c.cust_id=o.cust_id
    left join OrderItems a ON a.order_num=o.order_num
    where prod_id='BP01'
求问为什么d项 left join不可以呢
发表于 2022-07-20 10:28:33 回复(3)
select distinct cust_email
from Customers
where cust_id in
(
select cust_id
from orders
where order_num in
(
select order_num
from orderitems
where prod_id='BR01'
)
)
发表于 2022-07-20 16:27:01 回复(1)
发表于 2022-09-28 14:31:06 回复(0)