Cross en natural join
CROSS JOIN
Een cross join selecteert alle records van de linkertabel(len) en voegt per record alle records van de rechtertabel aan toe.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SELECT
*
FROM
bedrijven AS b
CROSS JOIN
contacten as C
->
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
| bedrijf_id | bedr_naam | contact_id | bedrijf_id | voornaam | achternaam |
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
| 1 | List en Bedrog | 1 | 3 | John | Doe |
| 2 | Models | 1 | 3 | John | Doe |
| 3 | PHP Hulp | 1 | 3 | John | Doe |
| 4 | CompuInc | 1 | 3 | John | Doe |
| 1 | List en Bedrog | 2 | 2 | Naomi | Campbell |
| 2 | Models | 2 | 2 | Naomi | Campbell |
| 3 | PHP Hulp | 2 | 2 | Naomi | Campbell |
| 4 | CompuInc | 2 | 2 | Naomi | Campbell |
| 1 | List en Bedrog | 3 | | Roger | Rabbit |
| 2 | Models | 3 | | Roger | Rabbit |
| 3 | PHP Hulp | 3 | | Roger | Rabbit |
| 4 | CompuInc | 3 | | Roger | Rabbit |
| 1 | List en Bedrog | 4 | 2 | Claudia | Shiffer |
| 2 | Models | 4 | 2 | Claudia | Shiffer |
| 3 | PHP Hulp | 4 | 2 | Claudia | Shiffer |
| 4 | CompuInc | 4 | 2 | Claudia | Shiffer |
| 1 | List en Bedrog | 5 | | Albert | Einstein |
| 2 | Models | 5 | | Albert | Einstein |
| 3 | PHP Hulp | 5 | | Albert | Einstein |
| 4 | CompuInc | 5 | | Albert | Einstein |
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
*
FROM
bedrijven AS b
CROSS JOIN
contacten as C
->
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
| bedrijf_id | bedr_naam | contact_id | bedrijf_id | voornaam | achternaam |
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
| 1 | List en Bedrog | 1 | 3 | John | Doe |
| 2 | Models | 1 | 3 | John | Doe |
| 3 | PHP Hulp | 1 | 3 | John | Doe |
| 4 | CompuInc | 1 | 3 | John | Doe |
| 1 | List en Bedrog | 2 | 2 | Naomi | Campbell |
| 2 | Models | 2 | 2 | Naomi | Campbell |
| 3 | PHP Hulp | 2 | 2 | Naomi | Campbell |
| 4 | CompuInc | 2 | 2 | Naomi | Campbell |
| 1 | List en Bedrog | 3 | | Roger | Rabbit |
| 2 | Models | 3 | | Roger | Rabbit |
| 3 | PHP Hulp | 3 | | Roger | Rabbit |
| 4 | CompuInc | 3 | | Roger | Rabbit |
| 1 | List en Bedrog | 4 | 2 | Claudia | Shiffer |
| 2 | Models | 4 | 2 | Claudia | Shiffer |
| 3 | PHP Hulp | 4 | 2 | Claudia | Shiffer |
| 4 | CompuInc | 4 | 2 | Claudia | Shiffer |
| 1 | List en Bedrog | 5 | | Albert | Einstein |
| 2 | Models | 5 | | Albert | Einstein |
| 3 | PHP Hulp | 5 | | Albert | Einstein |
| 4 | CompuInc | 5 | | Albert | Einstein |
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +
Het aantal records in het resultaat is dus het product van het aantal records van beide tabellen (in dit geval 20).
In deze context weinig zinvol, verder op een voorbeeld waarvoor het wel handig kan zijn.
NATURAL JOIN
Een natural join kijkt naar de kolomnamen van de tabellen, zijn die gelijk dan worden die kolommen opgenomen in de join voorwaarden.
In plaats van JOIN ... USING(koloma, kolomb) kan je dus NATURAL JOIN ... gebruiken.
Niet mijn persoonlijke voorkeur, met USING zie je tenminste waar je mee bezig bent.
« vorige pagina | volgende pagina »
Inhoudsopgave
- Inleiding
- Joins algemeen
- Inner en outer join
- Cross en natural join
- Joins in de praktijk (1)
- Subqueries
- Joins in de praktijk (2)
- Group by
- Group by voorbeelden
- Conditional staments
- Nog meer voorbeelden
- Nawoord