Joins
1. Algemeen
2. Tables
3. INNER JOIN
4. LEFT JOIN
5. RIGHT JOIN
6. OUTER JOIN
7. Overzicht
8. Nawoord
joins heb je in verschillende vormen (INNER JOIN, LEFT JOIN, RIGHT JOIN,...). we zullen ze 1 voor 1 aflopen.
1. Algemeen
Eerst iets algemeen, met Joins ga je 2 tables met elkaar verbinden, dus is het normaal dat je de ze een 'roepnaam' gaat geven. Dit is te vergelijken met een where-query met 2 tables:
SELECT * FROM table1, table2 WHERE table1.row = table2.row |
en als je de naam van de kolom wilt veranderen:
SELECT table1.row as id FROM table1, table2 WHERE table1.row = table2.row; |
top
2. Tables
dit zijn de tables waar we mee gaan werken:
klanten
id | naam
| 1 | Jean
| 2 | Maarten
| 3 | Josefien
| 4 | Elke
| 5 | Joël
| 6 | Dolfje
|
|
aankopen
id | product | klantID
| 1 | appelen | 1
| 2 | peren | 5
| 3 | appelen | 3
| 4 | bloemen | 2
| 5 | peren | 2
| 6 | appelen | 7
|
|
top
3. INNER JOIN
Deze functie doet eigenlijk hetzelfde als WHERE met 2 tabellen.
een voorbeeldje:
query: | SELECT * FROM klanten INNER JOIN aankopen ON (klanten.id = aankopen.klantID ) |
Deze query geeft alles van beide tables waar er een match is in de andere table, zoals Elke zal je niet aantreffen omdat zij geen product heeft gekocht.
id | naam | product | klantID
| 1 | Jean | appelen | 1
| 5 | Joel | peren | 5
| 3 | Josefien | appelen | 3
| 2 | Maarten | bloemen | 2
| 2 | Maarten | peren | 2
|
top
4. LEFT JOIN
Deze functie doet bijna hetzelfde als INNERJOIN alleen heeft het een groot verschil
een voorbeeldje:
query: | SELECT * FROM klanten LEFT JOIN aankopen ON (klanten.id = aankopen.klantID ) |
Deze query neemt de eerste tabel en voegt de waardes van de tweede er gewoon aan toe
en als iemand 2 waarden heeft (van de eerste table) word die nog eens getoond:
id | naam | product | klantID
| 1 | Jean | appelen | 1
| 2 | Maarten | peren | 2
| 2 | Maarten | bloemen | 2
| 3 | Josefien | appelen | 3
| 4 | Elke | | 4
| 5 | Joël | peren | 5
| 6 | Dolfje | | 6
|
top
5. RIGHT JOIN
Deze functie doet juist het omgekeerde van LEFTJOIN
een voorbeeldje:
query: | SELECT * FROM klanten RIGHT JOIN aankopen ON (klanten.id = aankopen.klantID ) |
Deze query geeft neemt de tweede tabel en voegt de waardes van de eerste er gewoon aan toe
en als iemand 2 waarden heeft (van de tweede table) word die nog eens getoond:
id | naam | product | klantID
| 1 | Jean | appelen | 1
| 5 | Joël | peren | 5
| 3 | Josefien | appelen | 3
| 2 | Maarten | bloemen | 2
| 2 | Maarten | peren | 2
| 7 | | appelen | 7
|
top
6. OUTER JOIN
Deze functie doet hetzelfde als LEFT JOIN en RIGHT JOIN tegelijk
een voorbeeldje:
query: | SELECT * FROM klanten OUTER JOIN aankopen ON (klanten.id = aankopen.klantID ) |
Deze query geeft neemt de eerste tabel en voegt de waardes van de eerste er gewoon aan toe en zet er ook alle waarde van de tweede query bij waarvan er niets in de eerste tabel zit.
id | naam | product | klantID
| 1 | Jean | appelen | 1
| 2 | Maarten | bloemen | 2
| 2 | Maarten | peren | 2
| 3 | Josefien | appelen | 3
| 4 | Elke | | 4
| 5 | Joël | peren | 5
| 6 | Dolfje | | 6
| 7 | | appelen | 7
|
top
7. Overzicht
Dus nu alles samengevat:
bij een INNER JOIN:
hij neemt alles waarvan er iets in de eerste tabel zit en in de tweede.
bij een LEFT JOIN:
hij neemt alles van de eerste tabel en zet er de waarden van de tweede tabel bij. (dus alles waarvan er niets in de 2de tabel zit is dan leeg)
bij een RIGHT JOIN:
hij neemt alles van de 2de table en zet er de waarden van de 1ste tabel bij. (dus alles waarvan er niets in de 1de tabel zit is dan leeg)
bij een OUTER JOIN:
hij neemt alles waarvan er iets in de eerste tabel zit of in de tweede. (dus alles waarvan er niets in de 1de tabel zit is dan leeg en dus alles waarvan er niets in de 2de tabel zit is dan leeg)
top
8. Nawoord
Ik hoop dat jullie wat geleerd hebben van deze tutorial,
als er foutjes in staan gelieve me te verwittigen.
|