Hilfe bei SQL-Abfrage

pl2017

Neuer Benutzer
Beiträge
1
Hallo zusammen,

ich habe ein Problem mit einer SQL-Abfrage und benötige Eure Hilfe.
Ich habe eine Tabelle "productattributes" mit folgendem Inhalt:

option_id option_value
----------------------------------
1 blau
1 gelb
4 M
4 L
4 XL

Option_id 1 ist gleich "Farbe" und option_id 4 ist gleich "Größe".

Die Ausgabe soll wie folgt aussehen:
blau | M
blau | L
blau | XL
gelb | M
gelb | L
gelb | XL

Kann mir jemand helfen?

Viele Grüße und besten Dank,
Patrick
 
Werbung:
Hallo, das sollte funktionieren. Ich konnte nicht sehen ob du ein Feld oder 2 Felder als Ausgabe haben wolltest. Du kannst eine Version der Felder löschen.

Code:
SELECT
    p1.option_value
    , p2.option_value
    , CONCAT(    p1.option_value, ' | ', p2.option_value) AS pv
FROM productattributes p1
CROSS JOIN
    (    SELECT *
        FROM productattributes
        WHERE option_id =4
    ) p2
WHERE 12.option_id =1;
 
Du suchst einen CROSS JOIN:

Code:
test=*# select * from pl2017 ;
 option_id | value
-----------+-------
  1 | blau
  1 | gelb
  4 | m
  4 | l
  4 | xl
(5 Zeilen)
test=*# with farben as (select * from pl2017 where option_id = 1), groessen as (select * from pl2017 where option_id = 4) select farben.value as farbe, groessen.value as groesse from farben cross join groessen;
 farbe | groesse
-------+---------
 blau  | m
 blau  | l
 blau  | xl
 gelb  | m
 gelb  | l
 gelb  | xl
(6 Zeilen)

Diese Syntax wird MySQL nicht verstehen, aber versteh Du, was ich da gemacht habe, und passe es an MySQL an.
 
Werbung:
Du hast vermutlich eine Basistabelle auf du die Informationen Größe und Farbe joinst. Damit wäre es auch leichter weil du dann nur 2 Joins auf die Untertabelle machen musst.

Code:
SELECT   t.*,
     p1.option_value AS Farbe,
     p2.option_value AS Groesse
FROM   tabelle t
LEFT JOIN productattributes p1
ON     t.pk = p1.fk_tabelle
AND     p1.option_id = 1
LEFT JOIN productattributes p2
ON     t.pk = p2.fk_tabelle
AND     p2.option_id = 4
 
Zurück
Oben