Man kann aber eine gruppierte Tabelle nicht wieder auf die Ausgangstabelle joinen, weil GROUP BY erst nach dem JOIN wirksam wird. Man müßte sich das Ergebnis von GROUP BY also abspeichern, wieder einlesen, und darauf dann JOIN anwenden. Und genau das ist ein Subselect, der das in einem einzigen Schritt erledigt.
Hm, ich habe gerade mal gesucht und dies hier gefunden:
http://www.little-idiot.de/mysql/mysql-118.html (letztes Beispiel)
Da werden JOIN und GROUP BY miteinander kombiniert. Ich habe mal folgenden Test durchgeführt:
Tabelle1:
index | p_id | k_name
Die Tabelle enthält Namen, die einer p_id zugeordnet sind. Eine p_id kann mehrfach vorkommen, ggf. mit gleichem Namen.
Tabelle2:
eltern_id | name
Die Tabelle enthält Informationen zu p_id (eltern_id ist die Verknüpfung). Wenn ich jetzt folgende Abfrage ausführe, um zu erfahren, welche Eltern wieviele Kinder gleichen Namens (hier "Willi") haben:
SELECT
COUNT(a.k_name) AS Anzahl,
b.name AS Elternname
FROM Tabelle1 AS a
LEFT JOIN Tabelle2 AS b
ON a.p_id = b.eltern_id
WHERE a.k_name = "Willi"
GROUP BY a.p_id
erhalte ich keine Fehlermeldung, sondern folgende Ergebnistabelle:
Anzahl | Elternname
-------------------
1 | Meier
2 | Schultze
Und es stimmt, zu Meier gehört 1 Willi, zu Schultze gehören 2 Willis. Oder bin ich da jetzt völlig auf dem Holzweg?
Siechfred