Count-Funktion

B

ByeBye 158824

Hallo Leute,

Ich möchte folgende Datenbankabfrage durchführen:

Ich habe 2 Tabellen. In der 1.Tabelle "Schüler" steht eine s_id (PK) und in der 2.Tabelle steht diese als FK! Außerdem gibt es in der 2. Tabelle eine Spalte namens k_id (Kurs-Id).

Jetzt möchte ich für bestimmte s_id's aus der 2. Tabelle und für eine besimmte Kurs-Id die Einträge der Schüler dazu counten.

Soweit kein Problem! Aber: Ich möchte im ResultSet auch die Schüler enthalten haben, die keinen Eintrag haben, also nicht in Tabelle 2 enthalten, aber eben von mir angefragt werden ob sie es denn sind. Falls nicht, sollen sie den count 0 erhalten.

Ist die Problemstellung einigermaßen verständlich herübergekommen?

Ich hoffe es kann mir jemand weiterhelfen!

Danke schon Mal,

Emil
 
Hallo Emil,

gehe ich recht in der Annahme, dass das Abfrage-Ergebnis bei folgend gefüllter Tabelle
Code:
+------+------+
| s_id | k_id |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    3 |    1 |
|    3 |    1 |
|    4 |    2 |
+------+------+
so aussehen sollte
Code:
+------+-------+
| s_id | COUNT |
+------+-------+
|    1 |     1 |
|    2 |     0 |
|    3 |     2 |
|    4 |     0 |
+------+-------+
, wenn man die Auswahl s_id IN (1,2,3,4) und k_id = 1 getroffen hat?

Wenn ja, dann könntest du das mit einem LEFT JOIN lösen:
SQL:
SELECT schueler.s_id, COUNT(tabelle.k_id)
FROM schueler
LEFT JOIN tabelle ON (schueler.s_id = tabelle.s_id AND tabelle.k_id = 1)
WHERE schueler.s_id IN (1, 2, 3, 4)
GROUP BY schueler.s_id

Andersfalls wäre es nicht schlecht, wenn du selber einen typischen Datensatz und das gewünschte Ergebnis anfügen könntest.

Grüße, Matthias
 
Zurück