SQL Outer Join





SQL > SQL Opdrachten > Outer Join

Hiervoor zag u een linker-join, of inner join, waarbij u rijen selecteert die gemeenschappelijk zijn voor de tabellen die betrokken zijn bij de join. Wat gebeurt als u elementen wenst te selecteren in een tabel ongeacht het feit of ze aanwezig zijn in de tweede tabel? U moet in dit geval de opdracht SQL OUTER JOIN gebruiken.

De syntaxis voor het uitvoeren van een outer join in SQL is databaseafhankelijk. In Oracle bijvoorbeeld wordt een "(+)" geplaatst in de component WHERE aan de andere zijde van de tabel waarvan u alle rijen wilt omvatten.

Veronderstel dat u de volgende twee tabellen hebt,

Tabel Store_Information
Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabel Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

en u wenst de omzet voor alle winkels. Met een gewone join verkrijgt u dit niet, want "New York" zal niet zijn inbegrepen vermits het niet voorkomt in de tabel Store_Information. Daarom moet u een outer join uitvoeren op de twee bovengenoemde tabellen:

SELECT A1.Store_Name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name (+)
GROUP BY A1.Store_Name;

Bemerk dat in dit geval Oracle syntaxis wordt gebruikt voor de outer join.

Resultaat:

Store_Name SALES
Boston 700
New York
Los Angeles 1800
San Diego 250

Opmerking: De uitvoer is NULL wanneer er geen overeenkomst is in de tweede tabel. In dit geval komt 'New York' niet voor in de tabel Store_Information, dus is de overeenstemmende "SALES" kolom NULL.

SQL Concatenate >>



Copyright © 2016   1keydata.com   Alle rechten voorbehouden