[RESOLVIDO] Dificuldade Query

Pessoal, bom dia.

Estou desenvolvendo um Sistema de Leilao e estou com dificuldade no SELECT para mostrar o historico de vencedores por Oferta.

Na minha tabela td_leilao tenho as seguintes colunas:
idLeilao
idUsuario
idOferta
lance

tenho o seguinte SELECT:
“SELECT l1 FROM Leilao l1 WHERE l1.lance = (SELECT MIN(l2.lance) FROM Leilao l2)”

Porém com essa consulta ele está mostrando o menor lance dentre todas as oferta (idOferta)
A minha dificuldade é como separar pela Oferta.

Para ser mais claro, veja um exemplo de como está minha tb_leilao

Agradeço a atenção.

"SELECT l1 FROM Leilao l1 WHERE l1.lance = (SELECT MIN(l2.lance) FROM Leilao l2)"

Isso, por que, SELECT MIN (qualquer coisa), trará o menor dentre todos os qualquer coisa que você possuir.
Agora, se fizer SELECT [color=red]MAX(alguma coisa)[/color] você terá o maior dentre todos os alguma coisa.

drsmachado, obrigado pelo retorno.

Entendi isso que você comentou. A minha dúvida é como dar um SELECT trazendo o lance minimo pelas ofertas (idOferta) que eu tenho.

Essa query aqui

"SELECT l1 FROM Leilao l1 WHERE l1.lance = (SELECT MIN(l2.lance) FROM Leilao l2)" 

traz tudo o que existe em leilao, desde que o valor do lance seja o menor de todos os lances.
Creio que haja uma tabela onde você determine o lance mínimo do leilão, correto? Qual é esta tabela? Quais são suas colunas?

Acho que ainda não fui claro.

Conforme a imagem que eu encaminhei, tenho na minha tb_leilao os lances e a que oferta o lance se refere (idOferta).

O que eu quero apresentar com o SELECT é:

idOferta = 1 / lance MIN = (menor lance dado pelos usuarios)
idOferta = 2 / lance MIN = (menor lance dado pelos usuarios)
idOferta = 3 / lance MIN = (menor lance dado pelos usuarios)

Entendeu? não quero o lance minimo entre todas as ofertas.
Preciso de auxílio para alterar esse SELECT que fiz.

Obrigado.

SELECT MIN(l2.lance) FROM Leilao l2

Isso traz apenas o menor lance de todos.
Você precisa de uma cláusula where que filtre qual menor lance você procura. Como descreveu, deseja o menor lance de cada usuário, logo, o filtro deve ser feito pela coluna que se refere ao usuário, certo?

select idoferta
, min(lance)
 from leilao
group by idoferta

ADEMILTON, boa tarde.

É esse resultado mesmo que eu desejo… Mas a dificuldade é fazer com a Query JPA… podes dar uma força?

Valeu.

Sorry, bacana… não manjo disso

[quote=ADEMILTON][quote]
O que eu quero apresentar com o SELECT é:

idOferta = 1 / lance MIN = (menor lance dado pelos usuarios)
idOferta = 2 / lance MIN = (menor lance dado pelos usuarios)
idOferta = 3 / lance MIN = (menor lance dado pelos usuarios)
[/quote]

select idoferta , min(lance) from leilao group by idoferta [/quote]
Se por JPA você quer dizer JPAQL, deve ser algo assim

SELECT l1.idoferta, min(l1.lance) FROM Leilao l1 GROUP BY l1.idoferta

Pessoal, boa noite.

Consegui da seguinte maneira:

SELECT l from Leilao l WHERE l.lance = (SELECT MIN(v.lance) FROM Leilao v WHERE v.oferta.idOferta = l.oferta.idOferta)

Agradeço a contribuição de todos.