题解 | #返回购买 prod_id 为 BR01 的产品#

返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(一)

https://www.nowcoder.com/practice/962b16554fbf4b99a87f4d68020c5bfb

SELECT c.cust_email
FROM Customers c
LEFT JOIN Orders o
ON c.cust_id = o.cust_id
LEFT JOIN OrderItems a
ON o.order_num = a.order_num
WHERE a.prod_id = 'BR01';
SELECT 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 '
    )
);

两种做法,第一种是左连接,自连接也可以,是为了防止有的用户不买,但题意本来就默认是找的买的。

题解:

1.三个表,都有联系,任务:查找用户信息表的邮件

2.限制:仅买过指定产品的用户

思路:

1.嵌套子查询,根据目标,一层层找最远的信息,也就是第二种做法

2.联结表,将三张表根据关系联结起来,直接用where语句过滤出目标记录

全部评论

相关推荐

妄想山海启动:9硕都比不上9本
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务