mysql wählt dynamische Zeilenwerte als Spaltennamen, eine andere Spalte als Wert
Ich habe eine Legacy-Tabelle mit Benutzerinformationen (die noch aktiv verwendet wird) und kann die Struktur von - nicht ändern.
id name value
------------------------------
0 timezone Europe/London
0 language en
0 country 45
0 something x
1 timezone Europe/Paris
1 language fr
1 country 46
Zeitzone / Sprache / Land usw. sind nur Beispiele für Namen. Sie können variabel sein. Es gibt keine endliche Liste, außer eindeutig in den Zeilen dieser Spalte
Ich benötige eine MySQL-kompatible SQL-Abfrage, die Folgendes zurückgeben würde:
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
Ich habe verschiedene Antworten zum Stackoverflow beim Hacken der Pivot-Tabellenfunktionalität in MySQL durchgesehen, und zwar ähnlich, aber keine davon scheint mit dem Fall der Verwendung von Aliasnamen für variable Spalten aus eindeutigen Zeilenwerten aus einer Spalte derselben Tabelle übereinzustimmen. Obwohl ich wenig geschlafen habe, fangen sie alle an, ein bisschen verschwommen zu werden, entschuldigen Sie sich im Voraus.
Als nächstes könnte ich vorbereitete Aussagen verwendenhttps://stackoverflow.com/a/986088/830171 Das würde zuerst alle möglichen / eindeutigen Werte aus der Namensspalte abrufen und eine Abfrage erstellen, die verwendetCASE WHEN
und / oder mehrereSELECT
oderJOIN
auf der gleichen Tabelle Abfragen.
Die Alternative, die ich mir vorstellen kann, wäre, alle Zeilen für diese Benutzer-ID abzurufen und sie in der Anwendung selbst in einer for-Schleife zu verarbeiten oder zu versuchen, die Namen auf eine begrenzte Menge zu beschränken und untergeordnete Werte zu verwenden.SELECT
s /JOIN
s. Diese zweite Option ist jedoch nicht ideal, wenn ein neuer Name hinzugefügt wird. Ich muss diese Abfrage erneut aufrufen.
Bitte sag mir, dass ich etwas Offensichtliches verpasst habe