GROUP_CONCAT()

(Freitag, den 18. Dezember 2009 um 09:03 Uhr)

Im Rahmen meines Datenbank Projektes hatte ich folgendes MySQL Problem:

  • ein Hotel-Gast kann mehrere Personen mitbringen.
  • in einer Übersicht über alle Gäste will ich alle Personen auflisten, die mit diesem Gast gekommen sind.

Das geht entweder in einer extra Tabelle oder zusammen gefasst in einer Zelle (Komma-separiert). Das erste würde meinem Vorsatz eine Übersicht zu zeigen nicht gerecht werden.

Mit CONCAT() kann man mehrere Spalten zu einer spalte zusammenfassen etwa:

SELECT CONCAT(vname, ' ', nname) AS name FROM person;

Das löst mein Problem noch nicht, da ich ja vertikal zusammenfassen möchte. Nach etwas suchen bin ich auf GROUP_CONCAT() gestoßen:

SELECT GROUP_CONCAT( nname SEPARATOR ', ') AS name FROM person;

Wenn man zusätzlich den Vornamen haben möchte:

SELECT GROUP_CONCAT( CONCAT(vname, ' ', nname) SEPARATOR ', ') AS name FROM person;

Dann kommt so etwas wie „Karl Müller, Hein Blöd, Max Mustermann“ heraus.
Das kann man dann in ein SQL Statement einfügen

Schreibe einen Kommentar

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