Pessoal tenho um select para realizar e estou com um problema
ele me traz diversos registros e gostaria que ele me trouxesse o ultimo registro de cada ID, em um caso quando posso filtrar pelo ID eu resolvi assim
porem quando não tenho este filtro não consigo filtrar…
estou usando o postgres 8 e imaginava que ele possuisse alguma função como LAST, mas a não consigo fazer a mesma funcionar nele…
se alguem tiver uma ideia ou saiba alguma função que rode nele e possa me ajudar eu ficaria muito grato.
Bom dia pessoal,
creio que vocês não me entenderam, eu quero resolver este problema no select e não no java, e de qualquer forma acho que vocês não entenderam, irei explicar novamente:
em um select eu posso trazer diversos embarques, cada embarque pode se repetir algumas vezes, pois ele pode repetir porem com data diferente.
Eu gostaria de fazer o select e no select buscar todos os embarques porem sem repeti-los e pegando os embarques que tem a data mais atual…
Entao voce deve fazer uma select precisa, que retorne apenas o que voce quer. Se a sua select nao consiga fazer isto (id = parametro) voce terá que filtrar com ajuda das classes do JAva.
e é nele que esta o problema pq este ai eu devo fazer uma consulta geral,
no que eu faço a consulta e recebo o ID eu apenas acrescentei um AND
para filtrar pelo ID e coloquei esta clausula
No order BY para trazer o ultimo ID com DESC e pegar apenas um com LIMIT 1,
porem quando não posso efetuar o filtro pelo ID não posso fazer isso.
No mysql creio eu tem o comando LAST passando o ID antes do from que com ele eu posso trazer apenas o ultimo …
mas estou usando o postgres e o mesmo não possui este comando pelo visto…
e não estava qurendo fazer isso no java em vista de ele ter de percorrer muitos registros dependendo o que o select trara…
beleza aí, colega…
quando você disse que os embarques poderiam se repetir e você precisa pegar apenas o mais atual, fiquei pensando que você poderia resolver acrescentando a seguinte cláusula no teu select:
embarques.dt_emissao =
(select max(sub.dt_emissao)
from embarques sub
where sub.ID = embarques.ID)
Essa é a idéia básica, precisa verificar melhor o join entre o select externo e esse sub-select que vai buscar a maior data existente de cada embarque.
Sou novata em Java e Postgree. Há muitos anosprogramava em Clipper e utilizava o DBF como banco de dados.
Minha dúvida é a seguinte: Estou fazendo um teste com o Postgre com mais de 150 milhões de registros. Não criei um campo com ID serial(de propósito) mas preciso pegar o último registro e ver o que foi lançado nele.
As propostas deste foram foram o de usar o ORDER BY … DESC LIMIT 1. Ocorre que para um banco de dados com este tamanho, o retorno é bastante demorado.
Não utilizei a opção MAX pq, conf. dito, não tenho um campo autoincrementável.
Alguém tem outra solução que seja mais rápida?