|
Nu gaat u leren over joins. Het correct maken van joins in SQL vereist veel van de elementen die tot nog toe werden behandeld. 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 wilt de omzet per regio. U merkt dat de tabel Geography informatie omvat over regio's en winkels, en tabel Store_Information informatie over de omzet voor elke winkel. Om de omzetinfo per regio te krijgen, moet de informatie van beide tabellen worden gecombineerd. Wanneer u beide tabellen bekijkt ziet u dat ze verbonden zijn door het gemeenschappelijk veld "store-name". U bekijkt nu eerst de SQL-instructie en later krijgt u de uitleg over het gebruik van elk segment:
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
Resultaat:
| REGION |
|
SALES |
| East |
|
700 € |
| West |
|
2050 € |
De eerste twee lijnen laten SQL twee velden kiezen, het eerste is het veld "region_name" in de tabel Geography (gealiassed als REGION), en het tweede is de som van het veld "Sales" in de tabel Store_Information (gealiassed als SALES). Merk op hoe de tabelaliassen hier worden gebruikt: Geography is gealiassed als A1, en Store_Information is gealiassed als A2. Zonder alias, zou de eerste lijn als volgt zijn
SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES
hetgeen heel wat omslachtiger is. Tabelaliassen maken dus de volledige SQL-instructie makkelijker te begrijpen, vooral wanneer er sprake is van meerdere tabellen.
Bekijk vervolgens lijn 3, de instructie WHERE. Hier wordt de voorwaarde van de join bepaald. De inhoud van "store_name" in de tabel Geography moet overeenstemmen met deze van de tabel Store_Information, u kunt dit bekomen door ze gelijk te stellen. De instructie WHERE is essentieel om te garanderen dat u de correcte uitvoer bekomt. Zonder de correcte WHERE instructie krijgt u een cartesiaanse join. Cartesiaanse joins zullen de query elke mogelijke combinatie van de twee (of welk aantal dan ook van tabellen in de instructie FROM) tabellen doen geven. In het huidige geval zou een cartesiaanse join 4 x 4 = 16 rijen geven.
SQL Outer Join >>
Copyright © 2013 1keydata.com Alle rechten voorbehouden.
|