I eine Legacy-Tabelle von Benutzerinformationen haben (die noch im aktiven Gebrauch ist) und kann nicht die Struktur der Änderung -mysql dynamische Zeilenwerte als Spaltennamen auszuwählen, eine andere Spalte als Wert
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. nur Beispiele für Namen sind sie variabel sein kann/gibt es keine endliche Liste andere als einzigartig auf Zeilen dieser Spalte
ich brauche eine MySQL kompatibel SQL-Abfrage, die zurückkommen würde -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
Ich habe verschiedene Antworten auf Stackoverflow um Hacking Pivot-Tabelle Funktionalität in MySQL und ähnliche, aber keiner von ihnen scheint zu diesem Fall der Verwendung von Variablen Spaltennamen Alias aus eindeutigen Zeilenwerte aus einer Spalte der gleichen Tabelle. Obwohl ich wenig geschlafen habe, beginnen sie alle ein bisschen zu verschwimmen, entschuldigt mich im Voraus.
Closest ich finden konnte, wäre vorbereitete Anweisungen https://stackoverflow.com/a/986088/830171 zu verwenden, die zunächst alle möglichen/eindeutige Werte von Namensspalte erhalten würde und eine Abfrage erstellen, die CASE WHEN
verwendet, und/oder mehrere Sub- SELECT
oder JOIN
auf derselben Tabelle Abfragen. Die Alternativen, die ich mir vorstellen kann, wären, alle Zeilen für diese Benutzer-ID zu bekommen und sie in der Anwendung selbst in einer For-Schleife zu verarbeiten, oder zu versuchen, die Namen auf einen endlichen Betrag zu begrenzen und Sub- SELECT
s/JOIN
s. Allerdings ist diese zweite Option nicht ideal, wenn ein neuer Name hinzugefügt wird, müsste ich diese Abfrage erneut aufrufen.
Bitte sagen Sie mir, ich habe etwas offensichtlich
Brauchen Sie wirklich, dass dies in 'sql' ausgedrückt wird oder würde eine Nachbearbeitung mit Ihrer bevorzugten Programmiersprache ausreichen? Wenn Sie sich mit Ihren nicht mehr optimierten Daten verbinden müssen, ist möglicherweise eine Ansicht/proc der Trick. – bluevector
Yeh ich werde das Chaos in der Anwendungsebene für jetzt behalten - ich werde alle Zeilen für diese Benutzer-ID und Schleife über das Einfügen von Daten in einem assoziativen Array. Ich wollte nur überprüfen, ob das die einzige gute Option ist. Immer noch sehr praktisch, um die SQL-Methode für Migrationen und einmalige Berichte zu haben. – gingerCodeNinja