Charly, se voce sabe a ordem que as coisas devem aparecer, por que voce não cria uma tabela com os "id's" na ordem desejada e faz um join ordenando pela chave da nova tabela? Espero ter ajudado! []'s Marcio _____
From: [email protected] [mailto:[email protected]] On Behalf Of Pablo Sánchez Sent: quarta-feira, 7 de outubro de 2009 18:13 To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Ordenando por Where in 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
