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:
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
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)
« 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