Pablo Sánchez escreveu:
> 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?

Rapaz, eu já tive esse problema, realmente não vejo uma solução simples.

Se a tua lista de filtro for pequena, você pode alterar a aplicação para 
escrever um order by com um filtro para cada entrada.

Mais ou menos assim:
# select login from password where login in ('root','admin','nilva') 
order by login='root' desc, login='admin' desc, login='nilva' desc ;

Esse exemplo é de uma base daqui, mas serve no teu caso.

[]´s, André Volpato

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a