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 ...
array_agg gibt es seit 8.4 erst, aber Du fängst ja sicher mit einer aktuellen Version an, oder?Code: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)
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Für Versionen vor 8.4: ich hab sowas auch mal benötigt:
http://www.pg-forum.de/sql/2655-glei...-ausgeben.html
wer bis zum hals in der scheisse steckt, der sollte den kopf nicht hängen lassen
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
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
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
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen