Outer join
ODBC supporta la sintassi left, right e full outer join SQL-92. La sequenza di escape per gli outer join è
{oj outer-join}
dove outer-join è
table-reference {LEFT | RIGHT | FULL} OUTER JOIN {table-reference | outer-join} ON search-condition
table-reference specifica un nome tabella e search-condition specifica la condizione di join tra i table-references.
Una richiesta outer join deve essere visualizzata dopo la parola chiave FROM e prima della clausola WHERE (se presente). Per informazioni complete sulla sintassi, vedere Sequenza di escape outer join nell'Appendice C: Grammatica SQL.
Ad esempio, le istruzioni SQL seguenti creano lo stesso set di risultati che elenca tutti i clienti e mostra quale dispone di ordini aperti. La prima istruzione usa la sintassi della sequenza di escape. La seconda istruzione usa la sintassi nativa per Oracle e non è interoperabile.
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(+))
Per determinare i tipi di outer join supportati da un'origine dati e un driver, un'applicazione chiama SQLGetInfo con il flag SQL_OJ_CAPABILITIES. I tipi di outer join che potrebbero essere supportati sono left, right, full o nested outer join; outer join in cui i nomi di colonna nella clausola ON non hanno lo stesso ordine dei rispettivi nomi di tabella nella clausola OUTER JOIN, inner join in combinazione con outer join e outer join che usano qualsiasi operatore di confronto ODBC. Se il tipo di informazioni SQL_OJ_CAPABILITIES restituisce 0, non è supportata alcuna clausola outer join.