Sim, mas como te disse:

estou usando uma lib, que faz um parser para fazer a paginação. E a versão
da lib que está sendo usada não está aceitando esse order by, gerando um SQL
inválido para criar o limit. Se eu tiro o order by, tudo funciona, ou seja,
o SQL está ok, mas fica tudo fora de ordem (claro). E fora de ordem não
atende...

O que preciso é substituir o order by de alguma forma...

Galera, deixa para lá, vou é ver se corrijo o bug da lib (não deveria, mas
vou. não deveria porque é a versão 0.11, e já está na 1.1.4! O que deveria
poder é fazer o upgrade para a última versão e ser feliz, mas infelizmente
não sou eu quem decide, e como eu estou para ir embora desse trampo semana
que vem mesmo, acho que vou deixar isso como uma tarefa pendente e focar
meus esforços no resto da aplicação).

2009/10/7 Charly Frankl <[email protected]>

> Uma pergunta para compreender melhor a tua consulta. O atributo "l.no_item"
> seria o individuo pelo qual você precisa ordenar? ou não tem nenhum atributo
> dentro desta pesquisa que determine a ordem, mas sim (apenas) a ordem
> apresentada no IN ?
>
> Att,
>
>
> --
> Charly Frankl
> http://javadevilopers.blogspot.com/
> [email protected]
> Linux user #391083
>
>
>
> 2009/10/7 Pablo Sánchez <[email protected]>
>
>> O problema é ter que construir uma query que ordene os elementos pelo
>> resultado de uma outra query.
>>
>>
>> Estou usando uma lib numa versão em que ao usar order by na coluna
>> descritiva do item dá um crash no paginador.
>>
>> Então eu faço uma primeira query, para pegar os ids na ordem que eu
>> preciso, e agora preciso fazer uma segunda query que me retorne os itens
>> listados na ordem que recebi na primeira listagem.
>>
>> O problema é que todas as soluções apresentadas resultaram em uma consulta
>> que retorna tal qual está no banco, ou em sintaxe inválida (o order by in,
>> por exemplo).
>>
>> Query de exemplo. Note que no where in os itens estão fora de ordem, eu
>> preciso que venha nessa ordem aparentemente aleatória (mas é o resultado do
>> order by o nome do item):
>>
>> SELECT l.nu_seq_item_asdf AS l__nu_seq_item_asdf,
>>        l.st_possui_recuperacao AS l__st_possui_recuperacao,
>>        l.nu_ano AS l__nu_ano, l.no_item_abreviado AS l__no_item_abreviado,
>>        l.no_item AS l__no_item,
>>        l2.nu_seq_item_asdf_qwer AS l2__nu_seq_item_asdf_qwer,
>>        l2.vl_aquisicao_qwer AS l2__vl_aquisicao_qwer,
>>        l2.vl_reforma_qwer AS l2__vl_reforma_qwer,
>>        l3.nu_seq_item_asdf_municipio AS l3__nu_seq_item_asdf_municipio,
>>        l3.vl_aquisicao_municipio AS l3__vl_aquisicao_municipio,
>>        l3.vl_reforma_municipio AS l3__vl_reforma_municipio,
>>        l4.co_municipio_qwer AS l4__co_municipio_qwer,
>>        l4.no_municipio AS l4__no_municipio, l4.sg_uf AS l4__sg_uf
>>   FROM qwerqwer.s_item_asdf l LEFT JOIN qwerqwer.s_item_asdf_qwer l2
>>        ON l.nu_seq_item_asdf = l2.nu_seq_item_asdf
>>        LEFT JOIN qwerqwer.s_item_asdf_municipio l3
>>        ON l.nu_seq_item_asdf = l3.nu_seq_item_asdf
>>      AND l3.co_municipio_qwer = '520870'
>>        LEFT JOIN qwerqwer.d_municipio l4
>>        ON l3.co_municipio_qwer = l4.co_municipio_qwer
>>      AND l3.co_municipio_qwer = '520870'
>>  WHERE l.nu_seq_item_asdf IN
>>           (207,
>>            206,
>>            204,
>>            205,
>>            288,
>>            289,
>>            199,
>>            198
>>           )
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
=================================
Pablo Santiago Sánchez
Análise e Desenvolvimento de Sistemas Web
Zend Certified Engineer #ZEND006757
[email protected]
(61) 9975-0883
http://www.sanchez.eti.br
http://www.corephp.com.br
"Quidquid latine dictum sit, altum viditur"
=================================
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a