Ik heb de volgende tabellen:
Ik wil nu met een query het volgende resultaat krijgen:
Onderstaande query heb ik zelf al geconstrueerd:
Het resultaat dat ik hiermee krijg is van deze vorm:
Het probleem is dus dat ik de namen van de activiteiten als kolom-naam wil krijgen met boolean-waardes erin. Ik heb al in de mysql-documentatie gezocht op boolean maar bijna elk resultaat had betrekking op de Fulltext-zoekfunctie.
Desnoods zou een query met onderstaande als resultaat genoeg zijn:
Mijn eigenlijk doel is dat ik maar één rij per deelnemer heb waar ik ook uit kan halen aan welke activiteiten zei deelnemen.
Ik heb verder me rot gezocht op google maar het probleem is dat ik geen steekwoorden kan bedenken waar ik dit probleem mee kan aanduiden ( woorden als collumn en row geven ontelbaar onrelevante resultaten ).
Ik hoop dat er hier iemand is die me kan helpen!
PS. Ik weet dat ik ook mbv php uiteindelijk kan krijgen wat ik via mysql wil doen. Toch zou ik graag een oplossing in SQL willen vinden.
code:
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
33
34
35
36
37
| Deelnemers +----+----------+------+ | id | voornaam | klas | +----+----------+------+ ... +----+----------+------+ | 4 | Hans | H4A | +----+----------+------+ Activiteiten +----+--------------+----------+ | id | naam | jaarlaag | +----+--------------+----------+ | 1 | springkussen | V5 | +----+--------------+----------+ | 2 | survival | H4 | +----+--------------+----------+ | 3 | zwemmen | B3 | +----+--------------+----------+ | 4 | muziek | V5 | +----+--------------+----------+ Koppeltabel +------+------+ | d_id | a_id | +------+------+ ... +------+------+ | 4 | 3 | +------+------+ | 4 | 1 | +------+------+ | 4 | 2 | +------+------+ |
Ik wil nu met een query het volgende resultaat krijgen:
code:
1
2
3
4
5
| +----+------+--------------+---------+----------+----------+ | id | naam | springkussen | zwemmen | muziek | survival | +----+------+--------------+---------+----------+----------+ | 4 | Hans | 1 (TRUE) | 1 (TRUE)| 0 (FALSE)| 1 (TRUE) | +----+------+--------------+---------+----------+----------+ |
Onderstaande query heb ik zelf al geconstrueerd:
code:
1
2
3
4
5
6
7
8
9
10
11
| SELECT
d.id,
d.naam,
a.naam as act_naam
FROM deelnemers as d
LEFT JOIN activiteiten as a
ON(a.id IN (SELECT k.activiteit_id
FROM koppeltabel as k
WHERE d.leerlingnummer = k.leerlingnummer
)
) |
Het resultaat dat ik hiermee krijg is van deze vorm:
code:
1
2
3
4
5
6
7
8
9
| +----+------+--------------+ | id | naam | act_naam | +----+------+--------------+ | 4 | Hans | springkussen | +----+------+--------------+ | 4 | Hans | survival | +----+------+--------------+ | 4 | Hans | zwemmen | +----+------+--------------+ |
Het probleem is dus dat ik de namen van de activiteiten als kolom-naam wil krijgen met boolean-waardes erin. Ik heb al in de mysql-documentatie gezocht op boolean maar bijna elk resultaat had betrekking op de Fulltext-zoekfunctie.
Desnoods zou een query met onderstaande als resultaat genoeg zijn:
code:
1
2
3
4
5
| +----+------+--------------+ | id | naam | activiteiten | +----+------+--------------+ | 4 | Hans | 3,2,1 | +----+------+--------------+ |
Mijn eigenlijk doel is dat ik maar één rij per deelnemer heb waar ik ook uit kan halen aan welke activiteiten zei deelnemen.
Ik heb verder me rot gezocht op google maar het probleem is dat ik geen steekwoorden kan bedenken waar ik dit probleem mee kan aanduiden ( woorden als collumn en row geven ontelbaar onrelevante resultaten ).
Ik hoop dat er hier iemand is die me kan helpen!
PS. Ik weet dat ik ook mbv php uiteindelijk kan krijgen wat ik via mysql wil doen. Toch zou ik graag een oplossing in SQL willen vinden.