对于外连接的 GBase 8s 扩展语法始于隐式的左外连接。即,您以 OUTER 关键字开始 GBase 8s 扩展外连接。
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 子句中的主表与每一从表之间创建连接条件或关系。
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 子句中的主表与每一从表之间建立连接条件。如果连接条件在两个从表之间,则查询失败。
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 教程指南 有复合的外连接的示例。