Ergebnis 1 bis 6 von 6

Thema: Mehrere Zeilen eines SLEELCT-Ergebnisses zusammenfügen

  1. #1
    obgr_seneca ist offline Neuer Benutzer
    Registriert seit
    17.03.2010
    Beiträge
    3

    Standard 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

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von obgr_seneca Beitrag anzeigen
    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 ...

    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)
    array_agg gibt es seit 8.4 erst, aber Du fängst ja sicher mit einer aktuellen Version an, oder?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    toni_83 ist offline Benutzer
    Registriert seit
    08.07.2008
    Beiträge
    42

    Standard

    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

  4. #4
    obgr_seneca ist offline Neuer Benutzer
    Registriert seit
    17.03.2010
    Beiträge
    3

    Standard

    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

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von obgr_seneca Beitrag anzeigen
    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    obgr_seneca ist offline Neuer Benutzer
    Registriert seit
    17.03.2010
    Beiträge
    3

    Standard

    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

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum