|
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_name |
Sales |
Date |
| Los Angeles |
1500 € |
05-Jan-1999 |
| San Diego |
250 € |
07-Jan-1999 |
| Los Angeles |
300 € |
08-Jan-1999 |
| Boston |
700 € |
08-Jan-1999 |
Tabel Geography
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San 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 © 2013 1keydata.com Alle rechten voorbehouden.
|