Hallo, Code: Select schule.schulname,count(protokoll_schule.schul_id) From schule,protokoll_schule WHERE schule.id=protokoll_schule.schul_id Group by schule.schulname Die Tabelle schule hat 1207 Einträge. Die Tabelle protokoll_schule hat aber nicht zu jeder Schule einen Eintrag, ergo kommt als Ergebnis nur der COUNT() von 981 Schulen raus. Wie schaffe ich es, auch die Schulen auszugben, bei denen die WHERE - Bedingung nicht zutrifft? Vielen Dank, FAbian
aus Code: WHERE schule.id=protokoll_schule.schul_id mach Code: WHERE 1 - Dann sollte er alle Schulen ausgeben.
Vielen Dank für deine Antwort, aber leider funktioniert dein Lösungsvorschlag nicht. Er gibt jetzt zwar alle Schulen aus, allerdings als Anzahl nun nicht mehr die zugehörige Anzahl der portokoll_schule Tabelle, sondern immer die volle Anzahl der protokoll_schule Tabelle. Ist ja auch klar, denn woher soll SQL jetzt wissen welche Protokolle welcher Schule zugeordnet werden.
Du kannst ein Deine Abfrage anhängen: Code: UNION SELECT schulname,0 FROM schule WHERE id NOT IN (SELECT schul_id FROM protokoll_schule);
oder Du versuchst es einfach mal so: Code: SELECT schule.schulname, COUNT( protokoll_schule.schul_id ) AS anzahl FROM schule LEFT JOIN protokoll_schule ON ( schule.id = protokoll_schule.schul_id ) Group by schule.schulname dann holst Du alle Schulen und jeweils die Protokolle dazu. Gibt es kein Protokoll für eine Schule, sollte als COUNT ne 0 rauskommen. Ich habs jetzt nicht getestet, aber sollte eigentlich richtig sein