Gleiche Tabelle mehrmals nebeneinander ausgeben

Hallo,

der Titel ist glaub nicht ganz selbsterklärend :slight_smile:

Ich habe eine Kundendatenbank mit Verschiedenen Tabellen.
Tabelle1: Kundennummer, Vorname, Name etc, und eine Daten
Tabelle 2: Kundennummer, elektronische_Adresse, Adressart etc.

Nun kann es natürlich sein, dass eine Kundennummer in der Tabelle 2 mehrmals erscheint, falls der Kunde verschiedene Tel-Nr. hat.

Soweit so gut. Nur wie müsste die Abfrage lauten, damit mein Ergebnis in etwa so aussieht:
Kundennummer, Vorname, Nachname, elektronische Adresse 1, elektronische Adresse 2, elektronische Adresse3, usw. also alles in EINER ZEILE.

Soweit wär ich im Moment:
select a.Kundennummer, a.Vorname, a.Name, b.elektronische_Adresse from Tabelle1
left outer join Tabelle2
on a.Kundennummer = b.Kundennummer

Allerdings erhalte ich die Daten so natürliche mehrzeilig, was ich nicht möchte.

Kann mir jemand helfen?

Danke
Toni
left outer join Tabelle 2

Du mußt die Daten aggregieren, so z.B.:

test=*# select * from kunden;
 id | name
----+------
  1 | ich
  2 | du
(2 Zeilen)

Zeit: 0,281 ms
test=*# select * from kunden2;
 id | email
----+--------
  1 | email1
  1 | email2
  1 | email3
  2 | email5
  2 | email6
(5 Zeilen)

test=# CREATE FUNCTION comma_aggregate(text,text) RETURNS text AS ' SELECT CASE WHEN $1 <> '''' THEN $1 || '', '' || $2 ELSE $2 END; ' LANGUAGE sql IMMUTABLE STRICT; CREATE AGGREGATE comma (basetype=text, sfunc=comma_aggregate, stype=text, initcond='' );
CREATE FUNCTION
Zeit: 28,129 ms
CREATE AGGREGATE
Zeit: 20,901 ms
test=*# select k.id, k.name, comma(k2.email) from kunden k left join kunden2 as k2 on (k.id=k2.id) group by 1,2;
 id | name |         comma
----+------+------------------------
  2 | du   | email5, email6
  1 | ich  | email1, email2, email3
(2 Zeilen)

Andreas