Nog meer voorbeelden

Een voorbeeld waarbij een cross join handig is.
We hebben drie tabellen:
cursisten: crst_id, crst_name
boeken: boek_id, boek_titel
cursisten_lezen_boeken: crst_id, boek_id

Nu willen we weten per cursist weten of hij/zij een boek wel of niet gelezen heeft;
De eerste stap is om met een cross join alle boeken aan elke cursist te koppelen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT DISTINCT
    crst_id, boek_id
FROM curstisten
CROSS JOIN boeken

Daarna met een left join kijken of de combinatie cursist boek in de koppeltabel staat, bovenstaande query wordt dan een subquery (met wat kolommen extra):
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
    cb.crst_name,
    cb.boek_titel,
    IF(c.crst_id IS NULL, 'Nee', 'Ja') AS boek_is_gelezen
FROM
    (
     SELECT DISTINCT
        crst_id, boek_id, crst_name, boek_titel
     FROM curstisten
     CROSS JOIN boeken
    ) AS cb
LEFT JOIN
    cursisten_lezen_boeken c
    USING (crst_id, boek_id)

« 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.