Freigeben über


Äußere Verknüpfungen

ODBC unterstützt die linke, rechte und vollständige äußere SQL-92-Joinsyntax. Die Escapesequenz für äußere Joins lautet

{oj outer-join}

Dabei lautet outer-join:

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

table-reference gibt einen Tabellennamen an und search-condition gibt die Verknüpfungsbedingung zwischen den table-references an.

Eine äußere Verknüpfungsanforderung muss nach dem FROM-Schlüsselwort und vor der WHERE-Klausel (sofern vorhanden) angezeigt werden. Vollständige Syntaxinformationen finden Sie unter äußere Verknüpfungs-Escapesequenz in Anhang C: SQL Grammar.

Die folgenden SQL-Anweisungen erstellen z. B. dasselbe Resultset, das alle Kunden auflistet und zeigt, welche offenen Aufträge vorhanden sind. Die erste Anweisung verwendet die escape-sequence-Syntax. Die zweite Anweisung verwendet die native Syntax für Oracle und ist nicht interoperabel.

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(+))  

Um die Typen von äußeren Verknüpfungen zu bestimmen, die von einer Datenquelle und einem Treiber unterstützt werden, ruft eine Anwendung SQLGetInfo mit dem SQL_OJ_CAPABILITIES-Flag auf. Die Typen von äußeren Verknüpfungen, die unterstützt werden können, sind linke, rechte, vollständige oder geschachtelte äußere Verknüpfungen; äußere Verknüpfungen, bei denen die Spaltennamen in der ON-Klausel nicht die gleiche Reihenfolge aufweisen wie die jeweiligen Tabellennamen in der OUTER JOIN-Klausel; innere Verknüpfungen in Verbindung mit äußeren Verknüpfungen und äußere Verknüpfungen mit jedem ODBC-Vergleichsoperator. Wenn der SQL_OJ_CAPABILITIES-Informationstyp 0 zurückgibt, wird keine äußere Verknüpfungsklausel unterstützt.