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

Hilfe bei SQL-Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von pl2017, 7 Februar 2017.

  1. pl2017

    pl2017 Neuer Benutzer

    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
     
  2. BerndB

    BerndB Datenbank-Guru

    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;
    
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  4. ukulele

    ukulele Datenbank-Guru

    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
     
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