mysql seleciona valores de linha dinâmicos como nomes de coluna, outra coluna como valor
Eu tenho uma tabela legada de informações do usuário (que ainda está em uso ativo) e não posso alterar a estrutura 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
fuso horário / idioma / país etc são apenas exemplos de nomes, eles podem ser variáveis / não há nenhuma lista finita que não seja exclusiva em linhas dessa coluna
Eu preciso de uma consulta SQL compatível com o MySQL que retornaria -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
Eu olhei através de várias respostas sobre stackoverflow em torno de hacking funcionalidade de tabela dinâmica para o MySQL e similares, mas nenhum deles parece corresponder a este caso de usar alias de nome de coluna variável de valores de linha única de uma coluna da mesma tabela. Embora eu tenha tido pouco sono, todos eles estão começando a ficar um pouco borrados, desculpas antecipadamente.
O mais próximo que eu poderia encontrar seria usar declarações preparadashttps://stackoverflow.com/a/986088/830171 que primeiro obteria todos os valores possíveis / exclusivos da coluna name e criaria uma consulta que usaCASE WHEN
e / ou vários sub-SELECT
ouJOIN
nas mesmas consultas de tabela.
As alternativas que posso imaginar seriam obter todas as linhas para esse id de usuário e processá-las no próprio aplicativo em um loop, ou tentar limitar os nomes a uma quantidade finita e usar sub-registros.SELECT
s /JOIN
s. No entanto, essa segunda opção não é ideal se um novo nome for adicionado. Eu teria que revisitar essa consulta.
Por favor, me diga que eu perdi algo óbvio