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