1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

2 Tabellen ein Datensatz

Dieses Thema im Forum "Oracle" wurde erstellt von dwdrumsschalli, 25 Januar 2019.

  1. dwdrumsschalli

    dwdrumsschalli Neuer Benutzer

    Hallo,

    ok, der Topictitel ist nicht gerade selbsterklärend, sorry!

    Ich versuch mal mein Problem zu beschreiben.

    Ich habe 2 Tabellen z.B. Fahrt und Fahrtadressen
    In Fahrt habe ich folgende Spalten... ID, Fahrgast
    In Fahrtadressen habe ich diese Spalten... ID, Strasse, Ort, Adresstyp
    Ein Eintrag in Fahrt sieht also so aus... 201, Hr. Fritz
    Eintrag in Fahrtadresse... 201, Keplerstr., Aort, Abfahrt
    201, Glückstr., Zort, Ziel

    Mit einer Abfrage möchte ich jetzt dies vereinen und zwar damit diese Zeile rauskommt...
    201, Hr. Fritz, Keplerstr., Aort, Glückstr., Zort

    Bitte um Hilfe wie ich das abfragen kann, da stehts bei mir leider an.

    Danke und freundliche Grüße,
    Daniel
     
  2. akretschmer

    akretschmer Datenbank-Guru

    was ist denn Dein Ansatz?

    Code:
    test=*# create table fahrt (id int primary key, fahrgast text);
    CREATE TABLE
    test=*# create table fahrtadressen (fahrt_id int references fahrt, ort text);
    CREATE TABLE
    test=*# insert into fahrt values (201, 'Max');
    INSERT 0 1
    test=*# insert into fahrt values (202, 'Lisa');
    INSERT 0 1
    test=*# insert into fahrtadressen values (201, 'berlin');
    INSERT 0 1
    test=*# insert into fahrtadressen values (201, 'muenchen');
    INSERT 0 1
    test=*# insert into fahrtadressen values (202, 'kiel');
    INSERT 0 1
    test=*# select f.id, f.fahrgast, fa.ort from fahrt f left join fahrtadressen fa on f.id=fa.fahrt_id;
     id  | fahrgast |   ort   
    -----+----------+----------
     201 | Max      | berlin
     201 | Max      | muenchen
     202 | Lisa     | kiel
    (3 rows)
    
     
  3. dwdrumsschalli

    dwdrumsschalli Neuer Benutzer

    mhm, nur möchte ich eben die 2 datensätze mit id=201 in eine zeile bei der abfrage.
    in der fahrtadresse sind ja die abfahrtadresse und die zieladresse 2 datensätze...bei der abfrage sollen diese aber in einer zeile sein...also jede id auch nur einen datensatz machen.

    ansatz hab ich leider garkeinen... finde dazu nichts!
     
  4. akretschmer

    akretschmer Datenbank-Guru

    ahhh, das war aufgrund der nichtformatierung schlecht erkenntbar. Du suchst eine Aggregation:

    Code:
    test=*# select f.id, f.fahrgast, string_agg(fa.ort,', ') from fahrt f left join fahrtadressen fa on f.id=fa.fahrt_id group by 1,2;
     id  | fahrgast |    string_agg   
    -----+----------+------------------
     201 | Max      | berlin, muenchen
     202 | Lisa     | kiel
    (2 rows)
    
    PostgreSQL, sollte in Ora ähnlich gehen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden