mysql selecciona valores de fila dinámicos como nombres de columna, otra columna como valor
Tengo una tabla heredada de información del usuario (que todavía está en uso activo) y no puedo cambiar la estructura de -
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
zona horaria / idioma / país, etc. son solo ejemplos de nombres, pueden ser variables / no hay otra lista finita que no sea única en las filas de esa columna
Necesito una consulta de SQL compatible con MySQL que devolvería -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
He revisado varias respuestas en stackoverflow alrededor de la piratería de la funcionalidad de la tabla dinámica en MySQL, y parecidas, pero ninguna de ellas parece coincidir con este caso de uso de alias de nombre de columna variable de valores de fila únicos de una columna de la misma tabla. Aunque he dormido poco, así que todos están empezando a ser un poco borroso, disculpas por adelantado.
Lo más cercano que pude encontrar sería usar declaraciones preparadas.https://stackoverflow.com/a/986088/830171 que primero obtendría todos los valores posibles / únicos de la columna de nombre y construiría una consulta que usaCASE WHEN
y / o sub-SELECT
oJOIN
en consultas de la misma mesa.
Las alternativas que se me ocurren serían obtener todas las filas para ese ID de usuario y procesarlos en la propia aplicación en un bucle for, o intentar limitar los nombres a una cantidad finita y usar sub-subgruposSELECT
s /JOIN
s. Sin embargo, la segunda opción no es ideal si se agrega un nuevo nombre. Tendría que volver a visitar esta consulta.
Por favor, dime que me he perdido algo obvio