Join über 3 Tabellen

B

ByeBye 158824

Join über 3 Tabellen - Java DB

Hi,
Ich möchte über 3 Tabellen joinen.
Tabelle - Schüler (S_ID, Jahrgangsstufen)
Tabelle - Jahrgang_Einschränkung (Jahrgangsstufe, Max_Zuteilungen)
Tabelle - Schülerhistorie (S_ID, halbjahr, schuljahr)

Jetzt joine ich die Schüler über die Jahrgangsstufe mit der Tabelle Jahrgang_Einschränkung, dann habe ich für jeden Schüler seine maximal möglichen Kurszuteilungen.

Danach joine ich die Schüler mit der Schülerhistorie über die S_ID.

Als Ergebnis hätte ich gerne für ein bestimmtes Schulhalbjahr, z.B. Winter 2009 alle Schüler, deren Einträge in der Schülerhistorie (also ein Count) geringer ist als ihr zulässiges Maximum.

Problem: Die Schüler, welche noch keinen Eintrag haben, werden da nicht mitgezählt und genau hier ist der Haken.

Das ist mein bisheriger Ansatz. Der funktioniert nur solange, wie ein Schüler noch keinen Eintrag in der Schülerhistorie hat.

SQL:
SELECT s.s_id
FROM schueler s
LEFT JOIN schuelerhistorie sh ON s.s_id = sh.s_id
LEFT JOIN jahrgang_beschraenkung j ON s.s_jahrgangsstufe = j.jahrgangsstufe
WHERE ((s.s_id=4 OR s.s_id=5 OR s.s_id=6) AND (ng_schuljahr=2009 AND ng_halbjahr='Winter'))
GROUP BY s.s_id, j.max_zuteilungen
HAVING (COUNT(s.s_id) <= j.max_zuteilungen)

Ich komme da einfach nicht mehr weiter. Danke für jeden Hint :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück