verschachtelte mySQL-Abfrage und SUM()

rarelines

Grünschnabel
Hallo,

ich habe 2 Tabellen, die ich gleichzeitig abfragen möchte. Es handelt sich um eine Anmeldedatenbank.

Tabelle 1 enthält die Kurse:

KID | Kurs | Datum | usw.

Tabelle 2 enthält die Anmeldungen:

AID | KID | Name | Teilnehmerzahl

Da hier Eltern ihre Kinder anmelden können, steht in "Teilnehmerzahl", wieviele Teilnehmer zu einer Anmeldung gehören. Nun möchte ich aber herausfinden, wieviele Teilnehmer zu einem KURS gehören, und das in der Kursübersicht darstellen, etwa so:

Kurs | Datum | Anzahl Teilnehmer (=Summe aus allen Feldern "Teilnehmerzahl", wo Datensatz entsprechende KID hat)

Ich habe leider überhaupt keine Ahnung, wie ich das anstellen soll, bzw. wie ich hier die Tabellen verknüpfen soll. Aus der 2. Tabelle brauche ich auch wirklich NUR die Summe der Teilnehmer.

Vielen Dank im Voraus für Eure Mühen.

Gruß
Sebastian
 
Zuletzt bearbeitet:
Probier es mal so:
Code:
SELECT k.Kurs, k.Datum, SUM(a.Teilnehmerzahl)
FROM Kurse k, Anmeldungen a
WHERE a.KID=k.KID
GROUP BY k.Kurs, k.Datum
mfg
 
Vielen Dank!

Funktioniert soweit schon ganz gut. Jetzt hab ich aber ein neues Problem:

Alle Kurse, zu denen es keine Anmeldungen gibt, erscheinen nicht mehr in der Kursübersicht, da bei diesen ja die WHERE-Klausel nicht zutrifft. Es gibt ja keine entsprechende KID in der anderen Tabelle, da es keinen Datensatz gibt.

Hat da jemand eine Idee!?
 
Zuletzt bearbeitet:
Sollte so funktionieren

Code:
SELECT k.Kurs, k.Datum, Sum(ISNULL(a.Teilnehmerzahl,0))
FROM Kurse AS k LEFT JOIN Anmeldungen AS a ON k.KID = a.KID
GROUP BY k.Kurs, k.Datum

mfg
 
Ich hab die ISNULL-Funktion rausgenommen und jetzt geht's. Vielen Dank!

Für was war denn das ISNULL eigentlich da? Liefert doch nur 0 oder 1 zurück, oder?
 
Falls ich mich kurz einmischen darf:
Was Red_Eagle da erklärt hat war IFNULL.
ISNULL liefert tatsächlich 0 wenn der Wert NULL ist und 1 wenn nicht.
 
Da kann wirklich sein, dass ich einen Fehler gemacht hab
(Ich vermisch leider zum Teil ein paar datenbankspezifische Sachen (siehe ISNULL, I'm sorry)

mfg

PS:
ISNULL() is eine Fkt. im T-SQL (IsNULL(check_expression, replacement_value))
 
Zurück