Condividi tramite


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.