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

Select über 2 Tabellen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von tadeus, 17 März 2016.

  1. tadeus

    tadeus Benutzer

    Hallo,

    ich habe eine Artikeltabelle:
    ArtNr, Titel, Beschreibung

    und eine Preitabelle
    ArtNr, Preisgruppe, Preis

    Jeder Artikel hat 6 Preise, also Preisgruppe kann Wert 1-6 annehmen.

    Wie bekomme ich mit einem einzigen Select den Titel, die Beschreibung und alle 6 Preise in einer Datenzeile? Also so dass ich keine 6 Ergebniszeilen bekomme sondern nur eine.

    Danke
     
  2. ukulele

    ukulele Datenbank-Guru

    Unter MySQL eigentlich nur mit 6 Joins auf die Preistabelle.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    vielleicht so in der Art:

    Code:
    test=*# select * from artikel ;
     id | name
    ----+-------
      1 | art 1
      2 | art 2
    (2 rows)
    
    test=*# select * from preise ;
     artikel | gruppe | preis
    ---------+--------+-------
      1 |  1 |  10
      1 |  2 |  12
      1 |  4 |  14
      2 |  3 |  23
      2 |  4 |  24
      2 |  6 |  26
    (6 rows)
    
    test=*# select a.id, a.name, p.preis from artikel a left join (select artikel, array_to_string(array_agg('Gruppe: '||gruppe::text || ' mit Preis: ' || preis::text),',') as preis from preise group by artikel) p on a.id=p.artikel;
     id | name  |  preis
    ----+-------+-------------------------------------------------------------------------
      1 | art 1 | Gruppe: 1 mit Preis: 10,Gruppe: 2 mit Preis: 12,Gruppe: 4 mit Preis: 14
      2 | art 2 | Gruppe: 3 mit Preis: 23,Gruppe: 4 mit Preis: 24,Gruppe: 6 mit Preis: 26
    (2 rows)
    
    Ist aber kein MySQL, sondern das in der Signatur genannte DB-System.
     
  4. ukulele

    ukulele Datenbank-Guru

    Wenn du pro Preis nicht eine eigene Spalte willst ginge es auch mit group_concat(). Bei eigenen Spalten kenne ich unter MySQL nur den Weg über Joins.
     
  5. tadeus

    tadeus Benutzer

  6. ukulele

    ukulele Datenbank-Guru

    Wenn du den String zerlegst ist ein 6-fach Join vieleicht doch die elegantere Lösung. Natürlich nur wenn die Anzahl immer gleich bleibt.
     
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