多表外连接顾名思义,是在外连接的基础之上,进行多个表格的连接,这里展示的是表格【order】同另外两个表格的外连接代码。
USE sql_store;
SELECT
o.order_id,
s.first_name,
s.customer_id,
sh.shipper_id AS shipper
FROM orders o
RIGHT JOIN customers s
ON o.customer_id = s.customer_id
LEFT JOIN shippers sh
ON o.shipper_id = sh.shipper_id
多个表格连接是从【FROM】开始并列书写。需要注意的是,【FROM】哪一个表格,因为这个会影响后续的外连接是用左连接还是右连接,一般来说,为了整齐且明晰,会统一用左连接。展示的代码有待改善。
那么,到底是把什么放在主表格位置呢?我们关注一下【ON】的条件,条件是以customer来连接,主表格信息完整,而另一个表格【order】是不完整的,所以,我们会以信息较为完整的表格作为主表格。
练习:
练习中主表格换成了【customers】这样更好地规范格式,全部使用左连接。
USE sql_store;
SELECT
o.order_date,
o.order_id,
c.first_name,
sh.shipper_id,
os.name
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
LEFT JOIN order_statuses os
ON o.status = os.order_status_id
完毕