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语句过滤出目标记录

京公网安备 11010502036488号