将两个表与第三个表相连接

使用 GBase 8s 扩展语法,下列查询显示作为两个表分别与第三个表的外连接结果的外连接。在此第三种类型的外连接中,连接关系可能仅仅是控制表与从属表之间的关系。

图: 查询

SELECT c.customer_num, c.lname, o.order_num, 
          order_date, call_dtime
          FROM customer c, OUTER orders o, OUTER cust_calls x
          WHERE c.customer_num = o.customer_num
          AND c.customer_num = x.customer_num
          ORDER BY lname
          INTO TEMP service;
该查询分别将从属表 orderscust_calls 连接至控制表 customer;它不连接两个从属表。INTO TEMP 子句将结果选择至临时表以供进一步处理或查询,如下所示。

图: 查询结果

customer_num lname             order_num order_date call_dtime
          
          114 Albertson
          118 Baxter
          113 Beatty
          103 Currie
          115 Grant                  1010 06/17/1998
          ⋮
          117 Sipes                  1012 06/18/1998
          105 Vector
          121 Wallack                1018 07/10/1998 1998-07-10 14:05
          106 Watson                 1004 05/22/1998 1998-06-12 08:20
          106 Watson                 1014 06/25/1998 1998-06-12 08:20
如果图 1尝试在两个从属表 ox 之间创建连接条件(如下所示),一条错误消息将指示创建两侧外连接。

图: 查询

WHERE o.customer_num = x.customer_num