Agregando conhecimento…
Dica para que está quebrando a cabeça tentando fazer a ordenação no MySQL em consultas utilizando UNION.
Este bug já existe há muito tempo, você pode ver detalhes aqui. O problema ocorre quando você une duas ou mais consultas e espera um tipo de ordenação para cada uma delas.
1 2 3 4 5 6 7 8 9 10 11 12 13 | ( SELECT id_cliente AS valor, nome FROM clientes WHERE ... ORDER BY nome ) UNION ALL ( SELECT id_cliente AS valor, nome FROM clientes WHERE ... ORDER BY nome ) |
A solução alternativa para corrigir este problema é adicionar o LIMIT para cada uma das consultas, você pode definir o valor que quiser ou colocar algo “infinito” como 9999999.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ( SELECT id_cliente AS valor, nome FROM clientes WHERE ... ORDER BY nome LIMIT 99999 ) UNION ALL ( SELECT id_cliente AS valor, nome FROM clientes WHERE ... ORDER BY nome LIMIT 99999 ) |
Página para publicar e armazenar conteúdo relacionado a Desenvolvimento Web:
PHP, MySQL, Javascript, JQuery, CSS e as novas tecnologias do momento.
Façam comentários, perguntas e sugestões que ficarei satisfeito por recebê-los.
Shiguenori Junior
Rogério Flores
agosto 26th, 2012 at 13:07
Obrigado por compartilhar a solução.