将两个以上的表进行连接的操作称为多表连接。连接多张表需要使用多个 JOIN 关键字。
可以将多表连接的执行过程理解为:第 1 张表与第 2 张表连接,将得到的中间结果表再与第3张表连接,将得到的中间结果表再与第 4 张表连接,以此类推,直到获得最终结果表。
例 1.16 查询每位顾客提交订单的日期、所定的物品名称及物品价钱:
select cname,order_date,ship_name,
(ship_price*quantity) as total_price
from customer join orders
on customer.customer_num=orders.customer_num join items on orders.order_
num=items.order_num;
或
select cname,order_date,ship_name,
(ship_price*quantity) as total_price
from customer , orders ,items
where customer.customer_num=orders.customer_num
and orders.order_num=items.order_num;
查询结果为:
cname order_date ship_name total_price
张一川 05/20/2008 商品 HRO $250.00
张一川 05/21/2008 商品 HSK $1920.00
张一川 05/21/2008 商品 HSKA $720.00
杰克 05/22/2008 商品 ANZA $99.00
李凤 06/07/2008 商品 HRO $250.00
杰克 06/22/2008 商品 HRR $2400.00
由于内连接运算满足交换律和结合律,多张表的连接顺序不会改变结果表,所以DBMS不一定按照表的先后顺序依次执行连接,而是根据执行代价选择最优的连接顺序。