Berekenen verkoop per concert

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

29/01/2015 12:47:45
Quote Anchor link
Hallo 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??

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'


George
 
PHP hulp

PHP hulp

26/11/2020 21:53:06
 
Ward van der Put
Moderator

Ward van der Put

29/01/2015 13:05:20
Quote Anchor link
Aggregeren met functies zoals SUM() doe je met GROUP BY.

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/01/2015 15:25:42
Quote Anchor link
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

Thomas van den Heuvel

29/01/2015 15:42:13
Quote Anchor link
Als 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 :).
Gewijzigd op 29/01/2015 15:48:37 door Thomas van den Heuvel
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/01/2015 15:57:41
Quote Anchor link
Correct ;-)
 
Jan de Laet

Jan de Laet

30/01/2015 13:40:11
Quote Anchor link
En 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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ON
   (b.concert_id = c.id) AND (b.status = 'Betaald' OR b.status = 'Reservering definitief')

en de WHERE weghalen.
 



Overzicht Reageren

 
 

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.