Joins in de praktijk (1)

Combinatie LEFT en INNER JOIN
Als aan één tabel meerdere tabellen gejoined worden dan mogen INNER en LEFT JOIN door elkaar gebruikt worden:

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
SELECT
    a.a_naam,
    b.b_naam,
    c.c_naam,
    d.d_naam
FROM
    tabelA a
INNER JOIN
    tabelB b
    ON a.a_id = b.a_id
LEFT JOIN
    tabelC c
    ON a.a_id = c.a_id
INNER JOIN
    tabelD d
    ON a.a_id = d.a_id

Waar de LEFT JOIN ook staat, het eindresultaat blijft hetzelfde, namelijk de records waarvan de a_id zowel in a,b en d voorkomen en de records waarvan de a_id eventueel in tabel c voorkomt.

Er zijn echter situaties waarin je wel alle records van tabel A wilt hebben, maar alleen de records van tabel B die in tabel C ook een gegeven hebben.
Bijvoorbeeld, bij de bedrijven en contactpersonen tabellen uit het vorige hoofdstuk hebben een derde tabel met de (privé)adresgegevens van de contactpersonen (indien bekend). We moeten dan met een nested join gaan werken, dat zie er zo uit:
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
SELECT
    b.bedr_naam,
    c.voornaam,
    a.adres
FROM
    bedrijven AS b
LEFT JOIN
    (
    contactpersonen AS c
    INNER JOIN
        contactadressen AS a
        ON c.contact_id = a.contact_id
    )
    ON b.bedr_id = c.bedr_id

Dit hadden we in de eerdere query ook zo kunnen doen.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Joins algemeen
  3. Inner en outer join
  4. Cross en natural join
  5. Joins in de praktijk (1)
  6. Subqueries
  7. Joins in de praktijk (2)
  8. Group by
  9. Group by voorbeelden
  10. Conditional staments
  11. Nog meer voorbeelden
  12. Nawoord

PHP tutorial opties

 
 

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.