Consulta SQL errada

5 respostas
valramos

Olá pessoal!

Tenho a seguinte consulta!

select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto

ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.

PQ isso?

5 Respostas

Marlon_Meneses

select idproduto, quantnovo, id as ultID from produtomovimento where id =(select max(id) from produtomovimento) group by idproduto
acho que deve ser isso o que você quer

valramos

Marlon,

Essa nem rodou aqui!!!

Vou ver aqui!!!

al.barbosa

valramos:
Olá pessoal!

Tenho a seguinte consulta!

select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto

ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.

PQ isso?

Porque quantnovo não está sendo usado nem para agrupar (no group by) nem com função agregada (max, min, avg, count, etc.). Não dá para saber de qual registro ele vai trazer.

Você quer trazer o último movimento de cada produto?

Sugiro o seguinte:

select idproduto, quantnovo, id as ultId from produtomovimento where id in (select max(id) from produtomovimento group by idproduto);

DavidUser

valramos:
Olá pessoal!

Tenho a seguinte consulta!

select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto

ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.

PQ isso?

apenas tente incluir o atributo quantnovo na clausula group by :

select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto, quantnovo

Dessa forma o agrupamento é feito inicialmente para idproduto e quantnovo (sem o risco de como anteriormente acabar sendo feito um produto cartesiano de idproduto e quantnovo).

valramos

Obrigado pela ajuda. Tive que fazer um select aninhado! Depois posto o codigo aqui da maneira que fiz pra eventuais consultas.
Resolvido

Criado 5 de julho de 2012
Ultima resposta 10 de jul. de 2012
Respostas 5
Participantes 4