Ergebnis 1 bis 2 von 2

Thema: Gleiche Tabelle mehrmals nebeneinander ausgeben

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

    Standard Gleiche Tabelle mehrmals nebeneinander ausgeben

    Hallo,

    der Titel ist glaub nicht ganz selbsterklärend :-)

    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

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von toni_83 Beitrag anzeigen

    Soweit so gut. Nur wie müsste die Abfrage lauten, damit mein Ergebnis in etwa so aussieht:
    Kundennummer, Vorname, Nachname, elektronische Adresse 1,

    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.:

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

Ähnliche Themen

  1. Mehrere gleiche Einträge nur einmal ausgeben
    Von tbob im Forum Andere Datenbanken
    Antworten: 1
    Letzter Beitrag: 23.12.2008, 12:45
  2. Frage Eine SQL Tabelle rückwärts ausgeben
    Von K1ngC0bra im Forum SQL
    Antworten: 1
    Letzter Beitrag: 29.11.2008, 15:20
  3. Gleiche Tabellen gemeinsam ausgeben
    Von Serpina im Forum SQL
    Antworten: 2
    Letzter Beitrag: 18.09.2007, 11:27
  4. die letzten drei zeilen der tabelle ausgeben?
    Von hatori.hanzo im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 07.09.2007, 19:47
  5. Zeile kopieren in gleiche Tabelle
    Von nylen im Forum SQL
    Antworten: 5
    Letzter Beitrag: 09.03.2007, 14:36

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