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

Textzeilen in einem Datensatz abfragen

Dieses Thema im Forum "DB2" wurde erstellt von Stefano, 27 November 2019.

  1. Stefano

    Stefano Neuer Benutzer

    Hallo zusammen

    Ich frage die Artikelnummer 0904911 in der Tabelle PFARTSTA (Artikelstamm) mit dazugehörenden mehrzeiligen Artikeltexten in der Tabelle PFARTTXT ab (Tabellen-Join).

    Der Artikel 0904911 besitzt in der Sprache D (ATXPRA) insgesamt 1-20 Textzeilen (ATXZEI).

    Entsprechend werden 20 Datensätze mit den Textzeile (ATXTXT) aufgelistet (siehe Bild).

    Gerne möchte ich die Abfrage aber so gestalten, dass nicht 20 Datensätze aufgelistet werden, sondern alle Textzeilen 1-20 in nur einem Datensatz aufgelistet werden.

    Beispiel: .. ATXZEI1 │ATXTXT1│ATXZEI2│ATXTXT2│ATXZEI3│ATXTXT3ATXZEI..20│ATXTXT..20│

    Könnte mir bitte jemand weiterhelfen?

    Herzlichen Dank und Grüsse
    Stefano
     

    Anhänge:

  2. akretschmer

    akretschmer Datenbank-Guru

    achtung, mit PostgreSQL:

    Code:
    andreas@[local]:5434/test# select * from stefano;
     artikel
    ---------
        4711
    (1 row)
    
    andreas@[local]:5434/test# select * from stefano_texte ;
     artikel | zeile |  info   
    ---------+-------+---------
        4711 |     1 | zeile 1
        4711 |     2 | zeile 2
        4711 |     3 | zeile 3
    (3 rows)
    
    -- Variante 1
    
    andreas@[local]:5434/test# select s.artikel, string_agg(st.info,', ') from stefano s left join stefano_texte st on s.artikel= st.artikel group by s.artikel;
     artikel |        string_agg         
    ---------+---------------------------
        4711 | zeile 1, zeile 2, zeile 3
    (1 row)
    
    
    -- Variante 2
    
    andreas@[local]:5434/test# select s.artikel, string_agg(st.info,'') filter (where st.zeile = 1) as z1, string_agg(st.info,'') filter (where st.zeile=2) as z2, string_agg(st.info,'') filter (where st.zeile = 3) as z3 from stefano s left join stefano_texte st on s.artikel=st.artikel group by s.artikel;
     artikel |   z1    |   z2    |   z3   
    ---------+---------+---------+---------
        4711 | zeile 1 | zeile 2 | zeile 3
    (1 row)
    
    
    Variante 2 geht nur, wenn da immer eine konstante Anzahl von Textzeilen existiert.
     
    Walter gefällt das.
  3. Stefano

    Stefano Neuer Benutzer

    Cool, vielen herzlichen Dank :) !!
     
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