1.上节课学习了,如何将sql-store数据库里面顾客表和订单表进行左连接,得到所有顾客的订单情况,包括没有订单的。
现在我们连接sql-store数据库里orders和shippners表,让发货人shipper_id出现在结果中,如果写的是join shippers sh on o.shipper_id=sh.shipper_id得到的结果显示,还是没有null shipper_id的。因此要加上left
注意:尽量都使用左连接。
select
c.customer_id,
c.first_name,
o.order_id
from customers c
left join orders o #左外连接
on c.customer_id=o.customer_id
left join shippers sh #左内连接
on o.shipper_id=sh.shipper_id
order by c.customer_id
练习:写出如下表的查询
答案:
select
o.order_id,
o.order_date,
c.first_name as customer,
sh.name as shipper,
os.name as status
from orders o
join customers c #这里left 和inner join也行,因为每个订单都有顾客,所以不必加
on o.customer_id=c.customer_id
left join shippers sh #因为每一笔订单不一定都有shipper_id,所以要加上left
on o.shipper_id=sh.shipper_id
join order_statuses os
on o.status=os.order_status_id #列名称不一样的也可以