对于外连接的 GBase 8s 扩展语法始于隐式的左外连接。即,您以 OUTER 关键字开始 GBase 8s
扩展外连接。
这是 GBase 8s 扩展 OUTER 子句的语法。
GBase 8s OUTER 子句
下列示例使用 OUTER 关键字来创建罗列所有客户及其订单的外连接,不论他们是否已下订单:
SELECT c.customer_num, c.lname, o.order_num FROM customer c,
OUTER orders o WHERE c.customer_num = o.customer_num;
此带有在 orders 表中相匹配的行从 customer 表返回所有行。如果在 orders 表中没有客户的记
录出现,则对那些有 NULL 值的客户返回的 order_num 列。
如果您有复合的外连接,即,该查询有多个外连接,则您必须或者嵌入附加的外连接或者在圆括号
中连接,如语法图所示,或在 WHERE 子句中的主表与每一从表之间创建连接条件或关系。
当 WHERE 子句中的表达式或条件关系到两个从表时,您必须在 FROM 子句中使用圆括号将连接的
表括起来,以强调主-从关系,如此例中所示:
SELECT c.company, o.order_date, i.total_price, m.manu_name
FROM customer c,
OUTER (orders o, OUTER (items i, OUTER manufact m))
WHERE c.customer_num = o.customer_num
AND o.order_num = i.order_num
AND i.manu_code = m.manu_code;
当您在 FROM 子句中省略括起从表的圆括号时,您必须在 WHERE 子句中的主表与每一从表之
间建立连接条件。如果连接条件在两个从表之间,则查询失败。
然而,下列示例成功地返回结果
将主表 customer 与子表 orders 连接
并将主表 customer 与从表 cust_calls 连接:
SELECT c.company, o.order_date, c2.call_descr
FROM customer c, OUTER orders o, OUTER cust_calls c2
WHERE c.customer_num = o.customer_num
AND c.customer_num = c2.customer_num;
GBase 8s SQL 教程指南 有复合的外连接的示例。