Siechfred: JOIN und GROUP BY

Beitrag lesen

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