Ä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.