Eu tenho uma tabela chamada "inicial" formatada da seguinte forma:
eu ia | categoria | valor |
---|---|---|
1 | Nome | Prumo |
1 | Contar | 102 |
1 | Serial | 123ABC |
2 | Nome | Mary |
2 | Serial | 234BCD |
3 | Serial | 345CDE |
Uma tabela "seriais":
serial | cor |
---|---|
123ABC | Azul |
234BCD | Vermelho |
345CDE | Azul |
E uma tabela 'usuários':
eu ia | prioridade |
---|---|
1 | Alto |
2 | Médio |
3 | Baixo |
Transponho o "inicial" usando o seguinte, usando a seguinte consulta e, em seguida, tento ingressar em "serial":
SELECT
MAX(CASE WHEN initial.category = 'Name' THEN initial.value END) 'Name',
MAX(CASE WHEN initial.category = 'Count' THEN initial.value END) 'Count',
MAX(CASE WHEN initial.category = 'Serial' THEN initial.value END) 'Serial',
serials.color
FROM initial
LEFT JOIN users on users.id = initial.id
LEFT JOIN serials on serials.serial = initial.value
Quando faço isso, ele não pode ingressar corretamente em 'serial' se houver outras entradas com o mesmo ID antes dele. tentei
LEFT JOIN serials on serials.serial = initial.value and initial.category = "Serial"
mas não fez nada. Se eu adicionar o and initial.category = "Serial"
à primeira junção:
LEFT JOIN users on users.id = initial.id and initial.category = "Serial"
Posso então obter a 'cor' com êxito, mas não obter mais os outros valores de categoria. Como eu poderia ingressar com êxito na tabela de números de série?
Resultados esperados:
eu ia | Nome | Contar | Serial | Cor |
---|---|---|---|---|
1 | Prumo | 102 | 123ABC | Azul |
2 | Mary | 234BCD | Vermelho | |
3 | 345CDE | Azul |
Actual ('Color' não é extraído dos IDs 1 e 2 porque inicial.value se refere à primeira entrada de cada ID, neste caso 'Nome' "Bob" e "Mary" enquanto para o ID 3, refere-se a 'Serial '"345CDE":
eu ia | Nome | Contar | Serial | Cor |
---|---|---|---|---|
1 | Prumo | 102 | 123ABC | |
2 | Mary | 234BCD | ||
3 | 345CDE | Azul |
Pensei em criar uma tabela temporária, mas devido às permissões de acesso não consigo criar nenhuma tabela/visualização