Boa tarde!
Preciso criar uma consulta no banco que me traga as ultimas 5 compras de um cliente. Eu consegui trazer as compras, porem não consigo filtrar somente as ultimas 5. Tentei colocar um limit 5 no select interno mas não funcionou.
SELECT c.* FROM cliente AS c INNER JOIN (SELECT * FROM nfe_cabecalho) AS n ON c.id = n.id_cliente
você tem dentro da sua table compra a informação das datas da compra? Se tiver, você pode ordenar pela data em ordem decrescente (da maior para a menor) usando ORDER BY 'coluna' DESC e aí aplicar o limit para pegar só as 5 últimas.
Claro que nesses exemplos ele não está fazendo o filtro para o cliente desejado. Logo essa query retornaria as 5 últimas comprar para qualquer cliente. você ainda precisaria usar um WHERE como alguma informação do cliente que você quer, como o id, por exemplo. Aí ficaria:
SELECTc.*FROMclienteAScINNERJOINnfe_cabecalhoASnON(c.id=n.id_cliente)WHEREn.id_cliente="número do id do cliente desejado"ORDERBYc.data_da_compraDESCLIMIT5;
R
rpassos81
blz, mas a questão do select dentro do outro é porque eu preciso de uma lista com todos os clientes e suas 5 ultimas compras.
e por ai vai, ou seja trazer uma lista com todos e seu compras, eu poderia listar todos os cliente e depois consultar as ultimas 5 compras, usando o limit, porem gostaria de saber se da para fazer no sql direto
erico_kl
Você não tem que usar um subselect pra buscar os clientes e as compras… pra isso você usa o join…
SELECTc.*,n.*FROMclienteAScJOINnfe_cabecalhoASnONc.id=n.id_clienteWHEREn.id_cliente="número do id do cliente desejado"ORDERBYn.data_da_compraDESCLIMIT5;
R
rpassos81
mas a questão não é buscar as compras de um cliente e sim de todos. Sendo assim, este sql não ira funcionar, pois ele vai trazer somente 5 registro que no meu exemplo acima seria as compras do cliente1, cliente2 e uma compra do cliente5, o que eu quero é trazer um lista com uns 1000 registros mas que seja as ultimas 5 compras de cada cliente.
H
huchoa1 like
Tenho algo parecido, utilizando banco de dados Oracle. O exemplo abaixo:
No caso do meu exemplo eu queria uma consulta com as ultimas 10 ordens de compra (campo nr_ordem_compra da tabela ordem_compra) por CNPJ (campo cd_cgc_fornecedor da tabela ordem_compra)