Berekenen verkoop per concert
George van Baasbank
29/01/2015 12:47:45Hallo allemaal,
Ik heb een tabel met daarin concerten en een tabel met de verkoop van de kaarten.
Nu wil ik in een simpel overzicht weten hoeveel kaarten er PER CONCERT zijn verkocht.
Onderstaande query geeft mij alleen het aantal van alle kaarten in totaal. Net niet wat ik wil.
Wie helpt mij een handje??
George
Ik heb een tabel met daarin concerten en een tabel met de verkoop van de kaarten.
Nu wil ik in een simpel overzicht weten hoeveel kaarten er PER CONCERT zijn verkocht.
Onderstaande query geeft mij alleen het aantal van alle kaarten in totaal. Net niet wat ik wil.
Wie helpt mij een handje??
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
c.omschrijving AS concerttitel,
SUM(b.aantal_kaarten) AS verkocht
FROM
concert AS c
LEFT JOIN
boekingen AS b
ON
b.concert_id = c.id
WHERE
b.status = 'Betaald'
OR
b.status = 'Reservering definitief'
c.omschrijving AS concerttitel,
SUM(b.aantal_kaarten) AS verkocht
FROM
concert AS c
LEFT JOIN
boekingen AS b
ON
b.concert_id = c.id
WHERE
b.status = 'Betaald'
OR
b.status = 'Reservering definitief'
George
PHP hulp
16/11/2024 15:25:16Aggregeren met functies zoals SUM() doe je met GROUP BY.
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
Let wel op dat je door kolommen uit een left gejoinde tabel in de where op te nemen, je de left join omkeert naar een inner join. Je moet dan de where conditie meenemen in de join condities om dit te voorkomen.
Thomas van den Heuvel
29/01/2015 15:42:13Als ik goed begrijp wat Ger probeert te zeggen is dat het heel veel uit maakt waar je je condities in je query opneemt.
De vorm van je query kan ertoe leiden dat concerten waarbij (nog) geen bevestigingen van betalingen zijn ontvangen (edit: en/of waarbij er nog geen definitieve reserveringen zijn), helemaal niet voorkomen in de resultaten (wat je waarschijnlijk niet wilt) in plaats van 0 verkochte kaarten bij dat concert (wat je waarschijnlijk wel wilt).
Vrij vertaald :).
De vorm van je query kan ertoe leiden dat concerten waarbij (nog) geen bevestigingen van betalingen zijn ontvangen (edit: en/of waarbij er nog geen definitieve reserveringen zijn), helemaal niet voorkomen in de resultaten (wat je waarschijnlijk niet wilt) in plaats van 0 verkochte kaarten bij dat concert (wat je waarschijnlijk wel wilt).
Vrij vertaald :).
Gewijzigd op 29/01/2015 15:48:37 door Thomas van den Heuvel
Jan de Laet
30/01/2015 13:40:11En de "GROUP BY c.omschrijving" ontbreekt. Is essentieel als je SUM() gebruikt.
En zoals je anderen al gezegd hebben, kun je de ON beter veranderen in:
en de WHERE weghalen.
En zoals je anderen al gezegd hebben, kun je de ON beter veranderen in:
Code (php)
1
2
2
ON
(b.concert_id = c.id) AND (b.status = 'Betaald' OR b.status = 'Reservering definitief')
(b.concert_id = c.id) AND (b.status = 'Betaald' OR b.status = 'Reservering definitief')
en de WHERE weghalen.