CONSULTA SQL CLIENTES E SUA ULTIMA VENDA

MICHAELL 14/04/2010 21:58:17
#339404
ola boa noite pessoal..
Gostaria de consultar a tabela clientes e tambem a ultima venda de cada cliente ...
tentei usar a consulta abaixo

select * from Clientes LEFT JOIN Vendas ON Clientes.codigo_cliente =Vendas.codigo_cliente


mas ele duplica o cliente caso tenha mais de uma venda...
como posso ajustar a minha consulta?
MICHAELL 14/04/2010 23:41:00
#339415
alguem pessoal?
JESUEL.OLIVEIRA 15/04/2010 02:19:56
#339427
se for mysql

  select * from Clientes LEFT JOIN Vendas ON Clientes.codigo_cliente =Vendas.codigo_cliente order by Vendas.codigo_cliente desc limit 1 
MICHAELL 15/04/2010 09:04:13
#339446
Citação:

:
se for mysql

  select * from Clientes LEFT JOIN Vendas ON Clientes.codigo_cliente =Vendas.codigo_cliente order by Vendas.codigo_cliente desc limit 1 



desculpe, nao falei que era ACCESS.. mas mesmo assim amigo, limit 1(top 1 no access) vai me trazer apenas um cliente...
quero que mostre todos os clientes mas com apenas a ultima venda de cada cliente.

da maneira que eu fiz ele funciona se o cliente tiver nenhuma venda ou apenas uma venda.. mas se tiver mais de uma venda ele duplica o resultado pela quantidade de vendas...


alguem sabe como ajudar?
JILNEY 15/04/2010 10:49:37
#339475
Se existir um campo data coloca para retornar a ultima:

select clientes.codigo_cliente, nome, max(data) as ulitma_venda from clientes inner join vendas on clientes.codigo_cliente = vendas.codigo_cliente group by clientes.codigo_cliente, clientes.nome

Ou se nao for a data tem que ter um campo VENDA que indica numericamente a venda, como codigo de cada venda, sendo este o campo chave primaria, para no caso de uma exlcusao retirar apenas a venda que se quer tambem. Neste caso retorne o Max(codigo_da_venda) que sera retornado o numero maior referente a venda de cada cliente.
JEAN.JEDSON 15/04/2010 10:57:58
#339476
seria apenas a data da ultima venda, ou data e valor?
MICHAELL 15/04/2010 11:04:46
#339479
Citação:

:
Se existir um campo data coloca para retornar a ultima:

select clientes.codigo_cliente, nome, max(data) as ulitma_venda from clientes inner join vendas on clientes.codigo_cliente = vendas.codigo_cliente group by clientes.codigo_cliente, clientes.nome

Ou se nao for a data tem que ter um campo VENDA que indica numericamente a venda, como codigo de cada venda, sendo este o campo chave primaria, para no caso de uma exlcusao retirar apenas a venda que se quer tambem. Neste caso retorne o Max(codigo_da_venda) que sera retornado o numero maior referente a venda de cada cliente.



valew mesmo amigo... bem parecido do que preciso.. só que nesse caso não exibe tambem os clientes sem vendas...
tipo, eu quero um relatorio de todos os clientes.. e se ele tiver venda que mostre a ultima. entendeu? é possivel isso?

DIOGOMUNARIN 15/04/2010 11:32:22
#339487
Resposta escolhida
ao invez do inner join vc coloca o left join naquela mesma instrucao
JILNEY 15/04/2010 22:56:12
#339551
como o diogo falou, apresenta apenas os que tem venda porque eu usei INNER JOIN, altere para LEFT JOIN
Tópico encerrado , respostas não são mais permitidas