Sven Rautenberg: Befehl distinct() in Kombination mit count

Beitrag lesen

Moin!

GROUP BY verträgt sich mit JOIN nicht, jedenfalls nicht in der Hinsicht, dass man sowohl Gruppierungsergebnisse (hier: Anzahl ermitteln) und Einzelergebnisse (die gezählt wurden) in einer Abfrage erhält.

Ah, danke für den Hinweis. Gibt's da was zum Nachlesen (außer auf dev.mysql.com, die Dokumentation ist in solchen Detailfragen m.E. eher dürftig).

Das kann sich auch nicht aus der Doku ergeben, sondern aus dem logischen Sinnzusammenhang von SQL-Abfragen.

GROUP BY vereinigt mehrere Tabellenzellen einer (möglicherweise durch JOIN aus diversen Tabellen erzeugten) Ergebnistabelle - soll heißen: Ohne GROUP BY entstünde eine Tabelle, in der einige Datensätze irgendwie zusammengefaßt werden sollen. Dabei werden Spalten, die identischen Inhalt haben, oft zum Gruppieren verwenden, und die Spalten mit unterschiedlichen Inhalten werden über eine der Aggregatfunktionen verfügbar gemacht. Die Einzelinhalte der jeweiligen Datensätze gehen dabei verloren.

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.

- Sven Rautenberg

--
My sssignature, my preciousssss!