第三章 8-多表外连接 outer joins between multipletables--Mosh mySQL

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   #列名称不一样的也可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值