题解 | #返回购买 prod_id 为 BR01 的#
返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(二)
https://www.nowcoder.com/practice/c7aa73afc41f4dfc925baebdd175c345
与93题一样
多表链接
select cust_email from Customers t inner join Orders t1 on t.cust_id=t1.cust_id inner join OrderItems t2 on t1.order_num = t2.order_num where prod_id ='BR01'
这道题,多表链接更简单一点。
多表链接,当没有特定的主表,基本上可以使用 inner join内链接
最后再加上条件即可,无论几张表,都是先生成一个大的虚拟表,然后筛选的。
表连接简化版本
select cust_email from Customers inner join Orders using(cust_id) inner join OrderItems using(order_num) where prod_id ='BR01'
这里使用using代替了 on,可以少写一点代码,不过我个人很少有使用using的习惯
多层子查询
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' ) )
多层子查询,相对来说麻烦一点。
还有一种可以子查询与链接综合使用,这里就不写了