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 © 2014   1keydata.com   Alle rechten voorbehouden



SQL SELECT
SQL DISTINCT
SQL WHERE
SQL AND OR
SQL IN
SQL BETWEEN
SQL LIKE
SQL ORDER BY
SQL Functies
SQL COUNT
SQL GROUP BY
SQL HAVING
SQL ALIAS
SQL Join
SQL Outer Join
SQL CONCATENATE
SQL SUBSTRING
SQL TRIM
SQL LENGTH
SQL REPLACE
SQL DATEADD
SQL DATEDIFF
SQL DATEPART
SQL GETDATE
SQL SYSDATE




Site-overzicht