Olá pessoALL!
Estou com um problema para usar order by junto com union all. O problema ocorre em um union de diversos selects, e cada select é bem complexo, mas pra facilitar eu reproduzi o erro num select pequeno e mais simples. Vejam o que acontece.
Qdo rodo apenas o select1, ele lista tdo que eu quero certinho e ordenado como eu estou pedindo, ou seja, pela coluna descrição.
Select1:
select mo.codigo,
mo.descricao,
(case m.tiporegfin when '01' then 'A'
when '60' then 'BB'
when '70' then 'CCC' end) as detalhe,
SUM(IFNULL(m.valortot,0)) as valor
from movcaixa m
left join modalid mo on mo.codigo = CAST(m.tipopagto as SIGNED)
where m.datamovto = '2007/5/21'
and m.status = '03'
and m.tiporegfin in ('01','60','70')
group by 1,2,3
order by mo.descricao
Então eu pego esse select1 e faço um UNION ALL com um select2. Abaixo como ficou:
[code](
select mo.codigo,
mo.descricao,
(case m.tiporegfin when ‘01’ then ‘A’
when ‘60’ then ‘BB’
when ‘70’ then ‘CCC’ end) as detalhe,
SUM(IFNULL(m.valortot,0)) as valor
from movcaixa m
left join modalid mo on mo.codigo = CAST(m.tipopagto as SIGNED)
where m.datamovto = ‘2007/5/21’
and m.status = ‘03’
and m.tiporegfin in (‘01’,‘60’,‘70’)
group by 1,2,3
order by mo.descricao
)
UNION ALL
(
select 0 as codigo,
‘Qualquer coisa’ as descricao,
‘Outra coisa’ as detalhe,
0 as valor
from sismodu
limit 1
)[/code]
Quando executo, os valores estão corretos, mas ele desordena tudo! Minha intenção era que ele saísse os registros do select1 ordenados por descrição e depois, no final de tudo, o único registro do select2.
O que acontece é que ele lista realmente os registros do select1 e depois de tudo os registros do select2. Só que no select1 ele ordena tudo pela primeira coluna (coluna código) e não pelo que eu estou mandando.
Alguém pode me dizer pq ele sempre ordena pela primeira coluna?
Por favor!!! Lembrem-se de que esse é um exemplo pequeno que eu fiz para que entendam o problema, não adianta me responder: “Coloque a descrição como sendo a primeira coluna e tudo estará resolvido”, ok? :?
Conto com a ajuda de vcs!!!
Grata,
Renata