mySQL - Wie zähle ich Einträge die keinen count haben
Hallo Forum,
ich habe zwei Tabellen. Die eine enthält Altersstufen (Tabelle alter), die andere enthält dazugehörige Texte (Tabelle texte).
Nun brauche ich eine Abfrage, die mir sagt wieviele Texteinträge es zu der jeweiligen Altersstufe gibt.
Folgendes habe ich dazu schon, das ist aber nicht was ich brauche:
Select COUNT(texte.id) AS Anzahl, alter.id
FROM texte
JOIN `alter` ON texte.alter_id = alter.id
WHERE
-hier ein paar Bedingungen-
GROUP BY alter.id
Diese Abfrage würde mir aber nur folgendes Ergebnis liefern:
Ich möchte aber dieses Ergbnis:
Wie lässt sich das als SQL Statement formulieren?
Danke und viele Grüße,
Fabian
ich habe zwei Tabellen. Die eine enthält Altersstufen (Tabelle alter), die andere enthält dazugehörige Texte (Tabelle texte).
id | alter |
---|---|
1 | 10-12 |
2 | 13-15 |
3 | 16-18 |
4 | 19-27 |
id | alter_id | texte |
---|---|---|
1 | 3 | bla |
2 | 3 | blub |
3 | 3 | lala |
4 | 1 | haha |
Nun brauche ich eine Abfrage, die mir sagt wieviele Texteinträge es zu der jeweiligen Altersstufe gibt.
Folgendes habe ich dazu schon, das ist aber nicht was ich brauche:
Select COUNT(texte.id) AS Anzahl, alter.id
FROM texte
JOIN `alter` ON texte.alter_id = alter.id
WHERE
-hier ein paar Bedingungen-
GROUP BY alter.id
Diese Abfrage würde mir aber nur folgendes Ergebnis liefern:
Anzahl | alter.id |
---|---|
3 | 16-18 |
1 | 10-12 |
Ich möchte aber dieses Ergbnis:
Anzahl | alter |
---|---|
1 | 10-12 |
0 | 13-15 |
3 | 16-18 |
0 | 19-27 |
Wie lässt sich das als SQL Statement formulieren?
Danke und viele Grüße,
Fabian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96555
Url: https://administrator.de/contentid/96555
Ausgedruckt am: 16.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Moin fablei,
hast natürlich Recht - so viel kann ein LEFT JOIN nicht bringen, wenn nach wie vor die Tabelle mit "allen Sätzen" die Tabelle "texte" bleibt....
Sorry für das zu flüchtige Lesen
Biber
hast natürlich Recht - so viel kann ein LEFT JOIN nicht bringen, wenn nach wie vor die Tabelle mit "allen Sätzen" die Tabelle "texte" bleibt....
Select COUNT(texte.id) AS Anzahl, alter.id
FROM `alter`
LEFT JOIN texte ON `alter`.id = texte.alter_id
WHERE
-hier ein paar Bedingungen-
GROUP BY alter.id
Sorry für das zu flüchtige Lesen
Biber
Moin fablei,
wenn ich Deine Idee versuche (ungetestet) umzusetzen, dann sollte syntaktisch so etwas herauskommen:
Grüße
Biber
wenn ich Deine Idee versuche (ungetestet) umzusetzen, dann sollte syntaktisch so etwas herauskommen:
Select
If (IsNull(texte.id), 0,COUNT(texte.id)) AS Anzahl, alter.id
FROM `alter`
LEFT JOIN texte ON `alter`.id = texte.alter_id
WHERE
-hier ein paar Bedingungen-
GROUP BY alter.id
Grüße
Biber
Naja fast. Das Problem ist nicht das der Wert <NULL> ist sondern gar nicht da.
Wenn ich das richtig sehe ist das du einen Count auf die alter.Table machen musst. Und dazu einen full outer Join oder right outer join auf die Leute. Dann müßte es klappen.
Verbal Ausgedrückt
Zähle alles auch wenn es keinen eintrag in der tabelle Texte hat.
Wenn ich das richtig sehe ist das du einen Count auf die alter.Table machen musst. Und dazu einen full outer Join oder right outer join auf die Leute. Dann müßte es klappen.
Verbal Ausgedrückt
Zähle alles auch wenn es keinen eintrag in der tabelle Texte hat.
Select count(alter.id) from
alter right outer join texte on alter.id = texte.alter_id