题解 | #返回购买 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语句过滤出目标记录
