Sdílet prostřednictvím


Vnější spojení

ODBC podporuje syntaxi levého, pravého a úplného vnějšího spojení SQL-92. Úniková sekvence pro vnější spojení je

{ojouter-join}

kde vnější spojení je

odkaz na tabulku {LEFT | RIGHT | FULL} OUTER JOIN {odkaz na tabulku | outer-join} ONsearch-condition

Table-reference určuje název tabulky a podmínka hledání určuje podmínku spojení mezi odkazy na tabulky.

Žádost o vnější spojení se musí zobrazit za klíčovým slovem FROM a před klauzulí WHERE (pokud existuje). Úplné informace o syntaxi naleznete v části Řídicí sekvence vnějšího spojení v dodatku C: Gramatika SQL.

Například následující příkazy SQL vytvoří stejnou sadu výsledků, která obsahuje seznam všech zákazníků a ukazuje, které mají otevřené objednávky. První příkaz používá syntaxi escape sekvence. Druhý příkaz používá nativní syntaxi oracle a není interoperabilní.

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

Chcete-li určit typy vnějších spojení, které podporuje zdroj dat a ovladač, aplikace volá SQLGetInfo příznakem SQL_OJ_CAPABILITIES. Typy vnějších spojení, které mohou být podporovány, jsou levé, pravé, plné nebo vnořené vnější spojení; vnější spojení, ve kterých názvy sloupců v klauzuli ON nemají stejné pořadí jako jejich názvy tabulek v klauzuli OUTER JOIN ; vnitřní spojení ve spojení s vnějšími spojeními; a vnější spojení pomocí libovolného relačního operátoru ODBC. Pokud SQL_OJ_CAPABILITIES informační typ vrátí hodnotu 0, není podporována žádná vnější klauzule join.