Junções externas
O ODBC dá suporte à sintaxe de junção externa esquerda, direita e completa do SQL-92. A sequência de escape de junções externas é
{oj outer-join}
em que outer-join é
table-reference {LEFT | RIGHT | FULL} OUTER JOIN {table-reference | outer-join} ON search-condition
table-reference especifica um nome de tabela e search-condition especifica a condição de junção entre as table-references.
Uma solicitação de junção externa deve aparecer após a palavra-chave FROM e antes da cláusula WHERE (se houver). Para obter informações completas sobre sintaxe, confira Sequência de escape de junção externa no Apêndice C: Gramática SQL.
Por exemplo, as instruções SQL a seguir criam o mesmo conjunto de resultados que lista todos os clientes e mostra qual tem ordens em aberto. A primeira instrução usa a sintaxe de sequência de escape. A segunda instrução usa a sintaxe nativa para Oracle e não é interoperável.
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(+))
Para determinar os tipos de junções externas que uma fonte de dados e um driver suportam, um aplicativo chama SQLGetInfo com o sinalizador SQL_OJ_CAPABILITIES. Os tipos de junções externas que podem ser suportados são junções externas esquerdas, direitas, completas ou aninhadas; junções externas nas quais os nomes de coluna na cláusula ON não têm a mesma ordem que seus respectivos nomes de tabela na cláusula OUTER JOIN; junções internas em conjunto com junções externas; e junções externas usando qualquer operador de comparação ODBC. Se o tipo de informação SQL_OJ_CAPABILITIES retornar 0, nenhuma cláusula de junção externa será suportada.