Informationen aus mehreren Reihen trotz „GROUP BY“

Folgendes Szenario:

Ich habe eine Datenbanktabelle, in der zu einem Benutzer in mehreren Reihen eine Information steht.

user_id, date, information_about_user_on_date
1, 2011-11-01, information_1
1, 2011-11-02, information_2
1, 2011-11-03, information_3

Diese Informationen möchte ich in einer Reihe anzeigen, ohne mir alle Zeilen einzeln holen zu müssen. In SQL gibt es zwar die schöne Funktion „GROUP BY“, hier würde ich aber nur noch eine der Informationen erhalten.

SELECT * FROM user_information GROUP BY user_id;
Ergebnis: 1, 2011-11-01, information_1

Hier würde ich also 3 Informationen verlieren. Aber MySQL hat die sehr nützliche Funktion „GROUP_CONCAT“ erschaffen, die hier Abhilfe schaffen kann.

SELECT
  user_id,
  date,
  GROUP_CONCAT(information_about_user_on_date SEPARATOR '|') AS info
FROM user_information;

Das Ergebnis dieser Abfrage sieht nun wie folgt aus:

user_id, date, info
1, 2011-11-01, information_1|information_2|information_3

Nun habe ich alle Informationen, welche ich haben wollte in einer Zeile. Möchte ich zusätzlich alle Datumsangaben haben, kann ich hier genauso verfahren.

Print Friendly, PDF & Email

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.