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)
PHP script in nieuw venster Selecteer het PHP script
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
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        |
+ --------------- + -------------- + --------------- + --------------- + ------------- + --------------- +

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.

« Lees de omschrijving en reacties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.