Ich weiß nicht wie ich es noch erklären soll.
IS NULL heißt: Gib mir alles was zwar miteinander verglichen wurde, aber nicht auf die Bedingung zutrifft zurück.
SQL will immer alle DS und alle angegebenen Tabellen miteinander verknüpften.
Wenn also mindestens 2 Tabellen angegeben wurden, aber bspw. ohne Bedingung/ Einschränkung, würde alles mit allem kombiniert, was dann zu einer extremen Ergebnismenge führen kann. Siehe auch karthesisches Produkt aus der Mengenlehre.
Wenn SQL nun bspw. Deine 2 Tabellen miteinander vergleicht, aber in einer von beiden Datensätze/Werte stehen, die mit der anderen Tabelle über die Bedingung nicht miteinander verknüpft werden konnten (status_id 3), dann wird dieser nicht zugeordnete Datensatz zu NULL. Ist zwar existent, hängt aber sozusagen in der Luft. ^^
Du willst aber jetzt gerne diesen DS (status_id 3 aus statustabelle) ermitteln und in jedem Falle als Ergebnis haben.
Also fragst Du mit IS NULL alle DS ohne Übereinstimmungen ab, die auf die Bedingung nicht zutrafen und in der Luft hängen und lässt sie Dir damit zurückgeben.
Da es aber wie gerade gesagt jede Menge Kombinationen gibt - die "Lufthänger" nach wie vor mit jedem anderen DS kombiniert sind, kommt nun Group ins Spiel.
Das group führt doppelte Ergebnisse zu einem zusammen und tada, Du erhälst alle unterschiedlichen in der Luft hängenden Datensätze ohne Restmüll und Doppelungen.
Analog zu IS NULL verhält sich quasi das Left outer Join.
Wieso das bei Dir nicht klappt weiß ich nicht. ^^
Diese Art Abfrage für alle Gefundenen
SELECT status_id, count(ident_id) as countage
from tabelle1
group by status_id
auswerten....
danach diese Abfrage für alle Nicht gefundenen also zb. status_id 3
select s.status_id, count(ident_id) as countage
from STATUS AS s
left outer join
tabelle1 as t
on t.status_id = s.status_id
group by s.status_id
auswerten...