SQL Query: COUNT für 3 Spalten mit Bedingung

21/03/2010 - 16:20 von Johannes C. Laxander | Report spam
Hallo zusammen,

irgendwie stehe ich auf dem Schlauch und komme nicht auf die Lösung. Ich
möchte in einer Abfrage die Anzahl der Datensàtze von drei Spalten ermitteln,
die jeweils einer Bedingung entsprechen. Bei den Spalten handelt es sich um
Ja/Nein-Werte. Über die Bedingung sollen nur die Zeilen gezàhlt werden, die
in der Spalte den Wert TRUE haben.

Folgende Abfrage habe ich formuliert, die mir allerdings die Anzal aller
Datensàtze liefert und nicht nur die, bei denen die Bedingung zutrifft:

SELECT

tblEvents.EventID, tblEvents.Datum, tblEvents.Ort,
COUNT(tblEventteilnehmer.Angemeldet) AS Anmeldungen,
COUNT(tblEventteilnehmer.Teilgenommen) AS Teilnahmen

FROM

tblEvents LEFT JOIN tblEventteilnehmer ON
tblEvents.EventID=tblEventteilnehmer.Veranstaltung

GROUP BY

tblEvents.EventID, tblEvents.Datum, tblEvents.Ort

HAVING

COUNT(tblEventteilnehmer.Angemeldet)=True,
COUNT(tblEventteilnehmer.Teilgenommen)=True,

ORDER BY

tblEvents.Datum DESC;


Was mache ich falsch? Wàre toll, wenn mir jemand helfen könnte meine
Blockade zu lösen ;-)


Gruß, Johannes.
 

Lesen sie die antworten

#1 Thomas Möller
21/03/2010 - 17:18 | Warnen spam
Hallo Johannes,

Am 21.03.2010 16:20, schrieb Johannes C. Laxander:
irgendwie stehe ich auf dem Schlauch und komme nicht auf die Lösung. Ich
möchte in einer Abfrage die Anzahl der Datensàtze von drei Spalten ermitteln,
die jeweils einer Bedingung entsprechen. Bei den Spalten handelt es sich um
Ja/Nein-Werte. Über die Bedingung sollen nur die Zeilen gezàhlt werden, die
in der Spalte den Wert TRUE haben.

Folgende Abfrage habe ich formuliert, die mir allerdings die Anzal aller
Datensàtze liefert und nicht nur die, bei denen die Bedingung zutrifft:

SELECT

tblEvents.EventID, tblEvents.Datum, tblEvents.Ort,
COUNT(tblEventteilnehmer.Angemeldet) AS Anmeldungen,
COUNT(tblEventteilnehmer.Teilgenommen) AS Teilnahmen

FROM

tblEvents LEFT JOIN tblEventteilnehmer ON
tblEvents.EventID=tblEventteilnehmer.Veranstaltung

GROUP BY

tblEvents.EventID, tblEvents.Datum, tblEvents.Ort

HAVING

COUNT(tblEventteilnehmer.Angemeldet)=True,
COUNT(tblEventteilnehmer.Teilgenommen)=True,

ORDER BY

tblEvents.Datum DESC;


Was mache ich falsch? Wàre toll, wenn mir jemand helfen könnte meine
Blockade zu lösen ;-)



das Zàhlen der Datensàtze kannst Du mit folgendem Ausdruck erledigen:

SELECT
Sum(-1 * ET.Angemeldet = True) AS Anmeldungen,
Sum(-1 * ET.Teilgenommen = True) AS Teilnahmen
FROM tblEventteilnehmer AS ET;


HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen