Pegar ultima venda - Mysql [RESOLVIDO]

Quero fazer o select do item que tem a venda mais recente, estou usando isso:

SELECT t1.id_animal, MAX( t1.data_venda ) , t1.fim_plano, t2.descricao FROM plano_animal AS t1 INNER JOIN plano AS t2 ON t1.id_plano = t2.id_plano where t1.id_animal= 134 GROUP BY t1.id_animal

Porém retorna o campo data_venda mais recente, mas os outros campos não correspondem a venda mais recente.

Quero trazer os campos referentes ultima venda, como fazer?

Não entendi esta consulta. O id_animal se repete para ter um agrupamento por este campo? este select funciona mesmo ou está faltando campos no group by? daria para mostrar um exemplo com registros nas duas tabelas e o resultado da consulta que você gostaria de obter?

Um animal pode ter mais de um plano, porém o plano válido é o ultimo a ser vendido, logo ele pode ter outros planos anteriores.

Resultado do Select:

ID Data Venda Fim Plano Plano
134 2013-03-01 2012-01-01 Platina

No banco:

ID Data Venda Fim Plano Plano
134 2013-02-28 2012-01-01 Platina
134 2013-03-01 2014-03-01 Diamante

O select pega a data de venda maior e mistura com a primeira linha(Observe a data de venda).

Tenta esta consulta:

SELECT t1.id_animal, t1.data_venda , t1.fim_plano, t2.descricao FROM plano_animal AS t1 INNER JOIN plano AS t2 ON t1.id_plano = t2.id_plano where t1.data_venda = (SELECT MAX(pa.data_venda) FROM plano_animal pa WHERE pa.id_animal = 134)

[quote=novato25]Tenta esta consulta:

SELECT t1.id_animal, t1.data_venda , t1.fim_plano, t2.descricao FROM plano_animal AS t1 INNER JOIN plano AS t2 ON t1.id_plano = t2.id_plano where t1.data_venda = (SELECT MAX(pa.data_venda) FROM plano_animal pa WHERE pa.id_animal = 134)
[/quote]

Resolvi assim:SELECT t1.id_animal, t1.data_venda, t1.fim_plano, t2.descricao FROM plano_animal AS t1 INNER JOIN plano AS t2 ON t1.id_plano = t2.id_plano WHERE t1.id_animal = ? AND t1.data_venda = ( SELECT MAX( data_venda ) FROM plano_animal WHERE id_animal = ? ) GROUP BY t1.id_animal

Obrigado pela ajuda =)

isso… faltou o “t1.id_animal = ?” no primeiro select da minha query. Mas o Group By na sua query é mesmo necessário?

Agora não é mais necessário, vou retirar.

Obrigado :lol: