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 ) 2009/10/7 Charly Frankl <carl...@gmail.com> > Pablo, também não consegui entender o problema. Você pode enviar um exemplo > do SQL que você está utilizando? > > Att, > > > -- > Charly Frankl > http://javadevilopers.blogspot.com/ > charlyfra...@gmail.com > Linux user #391083 > > > > > 2009/10/7 Pablo Sánchez <phack...@gmail.com> > >> Caros. >> >> >> Tenho um problema para resolver, relacionado à uma lib que gera um SQL >> inválido por ter um order by lá no meio. >> >> A questão é que eu consigo ordenar com 2 consultar, em uma coloco o order >> by, e coloco os ids no where campo in (lista). >> >> A consulta funciona então, mas como o where in não traz na ordem em que >> está em lista, eu precisava saber se vocês conhecem algum jeito de forçar >> que o banco respeite a ordem dos ids listados em where in. Ex: (129, 23, >> 1000, 200) e os itens do resultado vierem nessa ordem. >> >> Isso tudo só porque atualmente colocaram uma lib velha para caramba, e a >> mesma dá erro, na versão nova corrigiram a lib, e quebraram outras coisas, >> mas a questão é que para colocar a nova, eu teria que reescrever quase 70% >> da aplicação, inviável, então o jeito é resolver com essa solução nada >> elegante citada acima. >> >> Alguma idéia de como forçar a ordenação pela lista do where in? >> >> -- >> ================================= >> Pablo Santiago Sánchez >> Análise e Desenvolvimento de Sistemas Web >> Zend Certified Engineer #ZEND006757 >> phack...@gmail.com >> (61) 9975-0883 >> http://www.sanchez.eti.br >> http://www.corephp.com.br >> "Quidquid latine dictum sit, altum viditur" >> ================================= >> > > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > 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 phack...@gmail.com (61) 9975-0883 http://www.sanchez.eti.br http://www.corephp.com.br "Quidquid latine dictum sit, altum viditur" =================================
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral