外部联接

ODBC 驱动程序支持 SQL-92 左联接、右联接和完全外部联接语法。 外部联接的转义序列为

{ojouter-join}

其中,outer-join 为:

table-reference {LEFT | RIGHT | FULL} OUTER JOIN {table-reference | outer-join} ONsearch-condition

table-reference 指定表名,search-condition 指定 table-references 之间的联接条件。

外部联接请求必须出现在 FROM 关键字之后,WHERE 子句之前(如果存在)。 有关完整的语法信息,请参阅附录 C:SQL 语法中的外部联接转义序列

例如,以下 SQL 语句创建列出所有客户并显示哪些客户已开立订单的相同结果集。 第一个语句使用转义序列语法。 第二个语句使用 Oracle 的本机语法,不可互操作。

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status  
   FROM {oj Customers LEFT OUTER JOIN Orders ON Customers.CustID=Orders.CustID}  
   WHERE Orders.Status='OPEN'  
  
SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status  
   FROM Customers, Orders  
   WHERE (Orders.Status='OPEN') AND (Customers.CustID= Orders.CustID(+))  

要确定数据源和驱动程序支持的外部联接类型,应用程序使用 SQL_OJ_CAPABILITIES 标记调用 SQLGetInfo。 可能支持的外部联接的类型为左、右、完整或嵌套外部联接;ON 子句中的列名与 OUTER JOIN 子句中各自的表名的顺序不一样的外部联接;与外部联接相结合的内部联接;使用任何 ODBC 比较运算符的外部联接。 如果 SQL_OJ_CAPABILITIES 信息类型返回 0,则不支持外部联接子句。