Haben Sie sich die Frage gestellt – Wir gruppieren mit MySQL und was passiert mit den ganzen Werten, die in Spalten stehen, nach denen wir nicht gruppieren? Diese werden unter Umständen einfach durch die GROUP BY Klausel ausgeblendet. Manchmal möchten wir Sie aber behalten und sogar in einer bestimmten Reihenfolge. Anbei eine Erklärung, wie wir Werte von einer Gruppieren beibehalten können – mit MySQL Programmierung und die Funktion GROUP_CONCAT.
Ausgangsbasis
Wir haben folgende Tabelle:
ID Zimmer BesucherID
1 100 1
2 101 1
3 105 2
Wenn wir folgenden Befehl ausführen, um nach BesucherID mit MySQL GROUP BY zu gruppieren, so führen wir folgende Abfrage aus:
SELECT COUNT(*) as cnt, Zimmer, BesucherID FROM Tabelle GROUP BY BesucherID
Wir bekommen daraufhin einen solchen Ergebnis:
cnt Zimmer BesucherID
2 100 1
1 105 1
Was passiert aber mit sämtlichen Zimmerangaben? Hier bekommen wir einen zufälligen Wert, der sich auf die BesucherID bezieht.
Problemstellung
Nach Gruppierung mit MySQL möchten wir ggf. ausgeblendete Daten beibehalten und nicht nur per Random einen zufälligen Wert geliefert bekommen, wenn wir die Spalte selektieren.
Lösung
MySQL bietet die schöne Funktion GROUP_CONCAT, mit denen wir alle durch die Gruppierung ausgeblendeten Werte pro Spalte erhalten können. So lautet die Abfrage:
SELECT COUNT(*) as cnt, GROUP_CONCAT(Zimmer), BesucherID FROM Tabelle GROUP BY BesucherID
Hierbei bekommen wir folgendes Ergebnis:
cnt Zimmer BesucherID
2 100,101 1
1 105 1
Diese Funktion ist sehr nützlich, insbesondere wenn Sie durch die Gruppierung MIN oder MAX Werte suchen und Ihre korrespondierende Angaben direkt sehen wollen. Genau das zu tun, können Sie auch die Reihenfolge der Werte bestimmen, die durch GROUP_CONCAT in einer kommagetrennte Liste gezählt werden. So wird das gemacht mit GROUP_CONCAT und ORDER BY:
SELECT COUNT(*) as cnt, GROUP_CONCAT(Zimmer ORDER BY BesucherID), BesucherID FROM Tabelle GROUP BY BesucherID
Fazit
Wir hoffen, dass Sie sich mit dieser Funktion einige Zeit sparen konnten. Falls Ihnen der Beitrag gefällt, so nutzen Sie bitte den Gefällt mir Facebook Button.
Brauchen Sie Hilfe, kommen Sie nicht weiter? Wir stehen Ihnen zur Verfügung – 02161 / 177747 oder E-Mail.



