Mehrere Zeilen eines SLEELCT-Ergebnisses zusammenfügen

Ich habe als Ergebnis eines SELCT-Aufrufes, indem ich einige Tabellen mit einem LEFT JOIN zusammenfüge, im Ergebnis immer mehrere Zeilen, die sich in nur einem Feld unterscheiden.
Ich möchte diese nun zusammenfügen und in dem betroffenen Feld soll eine Komma-getrennt Auflistung der unterschiedlichen Inhalte stehen.

Leider sind meine SQL-Kenntnisse dafür noch nicht ausreichend. Hat jemand eine Idee?

Oliver

Idee? Oh, das ist sehr schwer …

test=# select * from master;
 id |  name
----+---------
  1 | andreas
(1 row)

test=# select * from detail ;
 id_master | telefon
-----------+----------
         1 | Festnetz
         1 | Handy
(2 rows)

test=# select m.id, m.name,array_to_string(array_agg(d.telefon),', ') from master m left join detail d on m.id=d.id_master group by m.id, m.name;
 id |  name   | array_to_string
----+---------+-----------------
  1 | andreas | Festnetz, Handy
(1 row)

array_agg gibt es seit 8.4 erst, aber Du fängst ja sicher mit einer aktuellen Version an, oder?

Andreas

Für Versionen vor 8.4: ich hab sowas auch mal benötigt:

http://www.pg-forum.de/sql/2655-gleiche-tabelle-mehrmals-nebeneinander-ausgeben.html

Danke für die Tipps…

Werde das versuchen. Dummerweise läuft auf der “Bastelmaschine” noch 8.2 (habe nicht ich aufgesetzt).

Werde berichten, wenn ich es habe.

Oliver

Du kannst das 8.4-Verhalten auch in 8.2 nachbilden: PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: User-Defined Aggregates

Andreas

Danke nicht nötig. Die Maschine auf der das Ganze nachher laufen soll, hat ein postgres-8.4.
Habe das eben mal getestet, es funktioniert!

Oliver