MariaDB Query Anfängerproblemchen

  • Hi,

    bin neu hier und relativ neu bei MariaDB und habe natürlich ein Problem, naja wohl eher ein Problemchen...
    Also folgendes:
    Tabelle data mit vier Spalten ID, USER_ID, FIELD_ID, VALUE.
    ID gibt jeder Zeile einen festen Wert,
    USER_ID ist 11 mal der gleiche Wert, der jeweils einer FIELD_ID zugeordnet ist, VALUE ist der eigentliche Wert. Das wiederhohlt sich fortlaufend. Also jeder Kunde (USER_ID) besteht aus 11 Einträgen (FIELD_ID von 1 bis 11) deren Werte wie Anschrift, Tel. etc in VALUE stehen.
    Mein Problem: Wie bekomme ich eine Abfrage hin, bei der Kd.Nr. Vorname, Nachname, Telefon in einer Zeile stehen?
    Mein Ansatz:

    SQL
    SELECT `USER_ID` `Kd. Nr.` , (select `VALUE` where `FIELD_ID` = 7) as  Vorname, (select `VALUE` where `FIELD_ID` = 9)  as Nachname, (select  `VALUE` where `FIELD_ID` = 6) as Telefon FROM `data` where `USER_ID` = 967


    Liefert mir zwar die benötigten Daten, aber halt in 11 Zeilen.
    Sorry für so ein kleines Anfängerproblem, aber könntet ihr mir trotzdem helfen?

    7 Mal editiert, zuletzt von Arne Drews (22. Oktober 2018 um 09:21) aus folgendem Grund: MOD: Code-Tags zugefügt

    • Offizieller Beitrag

    Machbar wäre das in der Form, dass Du die einzelnen Werte per JOIN verknüpfst:


    Das ist allerdings nicht sehr flexibel, wenn mal Felder dazukommen o.ä.
    Die Alternative dazu wäre PIVOT, was allerdings etwas komplexer ist.

  • Ähm, bringt aber immer noch 11 Zeilen, wenn jetzt aber auch in jeder Zeile das richtige Ergebnis steht.....
    Die Spaltenüberschriften heissen jetzt aber alle Value, bis auf die Erste, die heisst noch Kd.Nr.

    - - - Aktualisiert - - -

    Mit den folgenden Änderungen geht es:

    Also das GROUP BY wars dann wohl.
    Vielen Dank soweit. Das war allerdings erst die halbe Miete. Die eigentliche Abfrage erstreckt sich über 2 Tabellen. Mal schauen, ob es da auch noch läuft....

    3 Mal editiert, zuletzt von Schnurze (22. Oktober 2018 um 19:00)

  • Ist leider so, wie befürchtet:

    Beim Verknüpfen mit der 2. Tabelle über Kunde.USER_ID wird dank der GROUP BY halt nur noch ein Datensatz angezeigt und ohne halt jeweils 11.....

    Noch irgendwelche Ideen?

  • Mit Blindheit und Unwissenheit geschlagen....

    Funktioniert natürlich einwandfrei mit GROUP BY Kunde.USER_ID, eingang (Alleinstellungsmerkmal aus 2. Tabelle).

    Vielen, vielen Dank

    Einmal editiert, zuletzt von Schnurze (24. Oktober 2018 um 09:15)