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??


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
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.
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 :).
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:

ON
   (b.concert_id = c.id) AND (b.status = 'Betaald' OR b.status = 'Reservering definitief')

en de WHERE weghalen.

Reageren