Select über 2 Tabellen

tadeus

Benutzer
Beiträge
14
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
 
Werbung:
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.
 
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.
 
Werbung:
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.
 
Zurück
Oben