组合外连接的连接

要实现多级嵌套,可以创建使用三种外连接类型的任何组合的连接。使用 ANSI 语法,以下查询创建了作为对两个表与另一个外连接的简单外连接组合结果的连接。

图: 查询

SELECT c.customer_num, c.lname, o.order_num, 
          stock_num, manu_code, quantity
          FROM customer c, OUTER (orders o, OUTER items i)
          WHERE c.customer_num = o.customer_num
          AND o.order_num = i.order_num
          AND manu_code IN ('KAR', 'SHM')
          ORDER BY lname;
该查询首先执行 ordersitems 表上的外连接,并检索有关 manu_code 为 KAR 或 SHM 的商品的所有订单的信息。然后,它执行组合此信息与控制表 customer 的数据的另一个外连接。

图: 查询结果

customer_num lname             order_num stock_num manu_code quantity
          
          114 Albertson
          118 Baxter
          113 Beatty
          103 Currie
          115 Grant                  1010
          ⋮
          117 Sipes                  1012
          117 Sipes                  1007
          105 Vector
          121 Wallack                1018       302 KAR              3
          106 Watson                 1014
          106 Watson                 1004

当将外连接应用于某外连接与第三个表的结果时可用两种方法指定连接查询。两个从属表已连接,但如果控制表和从属表共享公共列,那么可以将控制表连接至任一从属表而不影响结果。