rijen combineren
Hi
ik heb hier een code welke per speler 2 rijen van 13 velden terug geeft.
zou ik op één of ander manier slechts 1 per speler met 24 velden. naam en id zijn dus hetzelfde.
in voorbeeldcode slechts 5 velden
Jan
ik heb hier een code welke per speler 2 rijen van 13 velden terug geeft.
zou ik op één of ander manier slechts 1 per speler met 24 velden. naam en id zijn dus hetzelfde.
in voorbeeldcode slechts 5 velden
Jan
Code (php)
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
38
39
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
38
39
SELECT
s1.id,
"W",
concat(s1.voornaam, " ", s1.naam) naam,
sum(if(m.classe_wit="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenwit) punten_wit
FROM
trn__spelers s1
JOIN
trn__partijen p
on s1.id=p.speler1
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s1.id_toernooi=57
group by
p.speler1
UNION
SELECT
s2.id,
"Z",
concat(s2.voornaam, " ", s2.naam) naam,
sum(if(m.classe_zwart="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenzwart) punten_wit
FROM
trn__spelers s2
JOIN
trn__partijen p
on s2.id=p.speler2
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s2.id_toernooi=57
group by
p.speler2
ORDER BY
naam
s1.id,
"W",
concat(s1.voornaam, " ", s1.naam) naam,
sum(if(m.classe_wit="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenwit) punten_wit
FROM
trn__spelers s1
JOIN
trn__partijen p
on s1.id=p.speler1
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s1.id_toernooi=57
group by
p.speler1
UNION
SELECT
s2.id,
"Z",
concat(s2.voornaam, " ", s2.naam) naam,
sum(if(m.classe_zwart="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenzwart) punten_wit
FROM
trn__spelers s2
JOIN
trn__partijen p
on s2.id=p.speler2
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s2.id_toernooi=57
group by
p.speler2
ORDER BY
naam
Zoiets misschien? Heb wat hulp van ChatGPT gekregen.
Code (php)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
SELECT
id,
naam,
MAX(partijen_wit) AS partijen_wit,
MAX(punten_wit) AS punten_wit,
MAX(partijen_zwart) AS partijen_zwart,
MAX(punten_zwart) AS punten_zwart
FROM (
SELECT
s1.id,
concat(s1.voornaam, " ", s1.naam) naam,
sum(if(m.classe_wit="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenwit) punten_wit,
0 AS partijen_zwart,
0 AS punten_zwart
FROM
trn__spelers s1
JOIN
trn__partijen p
on s1.id=p.speler1
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s1.id_toernooi=57
GROUP BY
p.speler1
UNION
SELECT
s2.id,
concat(s2.voornaam, " ", s2.naam) naam,
0 AS partijen_wit,
0 AS punten_wit,
sum(if(m.classe_zwart="Nietgespeeld", 0, 1)) partijen_zwart,
sum(m.puntenzwart) punten_zwart
FROM
trn__spelers s2
JOIN
trn__partijen p
on s2.id=p.speler2
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s2.id_toernooi=57
GROUP BY
p.speler2
) AS subquery
GROUP BY
id, naam
ORDER BY
naam
id,
naam,
MAX(partijen_wit) AS partijen_wit,
MAX(punten_wit) AS punten_wit,
MAX(partijen_zwart) AS partijen_zwart,
MAX(punten_zwart) AS punten_zwart
FROM (
SELECT
s1.id,
concat(s1.voornaam, " ", s1.naam) naam,
sum(if(m.classe_wit="Nietgespeeld", 0, 1)) partijen_wit,
sum(m.puntenwit) punten_wit,
0 AS partijen_zwart,
0 AS punten_zwart
FROM
trn__spelers s1
JOIN
trn__partijen p
on s1.id=p.speler1
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s1.id_toernooi=57
GROUP BY
p.speler1
UNION
SELECT
s2.id,
concat(s2.voornaam, " ", s2.naam) naam,
0 AS partijen_wit,
0 AS punten_wit,
sum(if(m.classe_zwart="Nietgespeeld", 0, 1)) partijen_zwart,
sum(m.puntenzwart) punten_zwart
FROM
trn__spelers s2
JOIN
trn__partijen p
on s2.id=p.speler2
JOIN
trn__mogelijkeuitslagen m
on m.id=p.uitslagid
WHERE
s2.id_toernooi=57
GROUP BY
p.speler2
) AS subquery
GROUP BY
id, naam
ORDER BY
naam
Gewijzigd op 30/01/2024 19:37:36 door - Ariën -
Heb je de AVG (laten) overtreden voor slechts een codevoorbeeld? :)
https://www.security.nl/posting/827313/ChatGPT+in+strijd+met+AVG+oordeelt+Italiaanse+privacytoezichthouder
Wat er gevraagd wordt heet in het Engels ook wel 'tabulate' of 'pivot'. Je kunt tabellen of kolommen in MySQL/MariaDB pivoteren met het SO voorbeeld uit https://stackoverflow.com/questions/7674786/how-can-i-return-pivot-table-output-in-mysql
Er zijn vast ook grafische tools met query builders waarin je dit soort SQL kunt laten genereren. Moet je even zoeken op internet.
https://www.security.nl/posting/827313/ChatGPT+in+strijd+met+AVG+oordeelt+Italiaanse+privacytoezichthouder
Wat er gevraagd wordt heet in het Engels ook wel 'tabulate' of 'pivot'. Je kunt tabellen of kolommen in MySQL/MariaDB pivoteren met het SO voorbeeld uit https://stackoverflow.com/questions/7674786/how-can-i-return-pivot-table-output-in-mysql
Er zijn vast ook grafische tools met query builders waarin je dit soort SQL kunt laten genereren. Moet je even zoeken op internet.
Bedankt Ariën
@Ad Fundum:
1. Gelukkig zijn we niet in Italië :)
2. Draaitabel systemen gebruik ik al geruime tijd. Ook gestart met hier een vraagje te stellen want toen kende ik nog niet veel van mysql, eigenlijk niets. Ik heb lang gezocht en niet bruikbaar gevonden om rijen te combineren en aan subquery heb ik niet gedacht.
@Ad Fundum:
1. Gelukkig zijn we niet in Italië :)
2. Draaitabel systemen gebruik ik al geruime tijd. Ook gestart met hier een vraagje te stellen want toen kende ik nog niet veel van mysql, eigenlijk niets. Ik heb lang gezocht en niet bruikbaar gevonden om rijen te combineren en aan subquery heb ik niet gedacht.
Nog eentje om te overwegen; je kunt ook een SELECT in een SELECT doen, waarbij die binnenste SELECT-subquery gebruik maakt van de data van de buitenste SELECT:
Het voordeel van deze aanpak is dat eerst de resultaten van x worden opgehaald, en daarna gecombineerd met y. Dat scheelt vooral wanneer x meerdere JOINs bevat in de performance.
Het voordeel van deze aanpak is dat eerst de resultaten van x worden opgehaald, en daarna gecombineerd met y. Dat scheelt vooral wanneer x meerdere JOINs bevat in de performance.
.



