AGRUPAR E MOSTRAR O PRECO DO MAIS RECENTE

WEBIER 28/03/2011 13:24:03
#369450
pessoal, fiz essa SQL para unir 2 tabelas e mostrar num grid.
SQL = [Ô]SELECT PRODUTOS.*, PRODUTOS_ENTRADA_ITENS.*, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO ORDER BY PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO[Ô]


No grid vai aparece informações de produtos.

Abacate R$ 2,00
Feijao R$ 3,50
Arroz R$ 1,55

o problema é que na tabela PRODUTOS_ENTRADA_ITENS onde fica todas as entradas daquele mesmo produto, ou seja, toda vez que chega aquele produto na loja eu dou entrada... entao quando mostrar no grid aparece todas as entradas, exemplo:

Abacate R$ 2,00
Abacate R$ 1,80
Abacate R$ 2,20
Feijao R$ 3,50
Arroz R$ 1,55

então quero agrupar por produto (PRODUTOS.CODIGO) para aparecer somente 1 de cada produto...

ai me saiu outra duvida... o preço final do produto é a ultima entrada que dei naquele produto na tabela PRODUTOS_ENTRADA_ITENS.... o campo PRODUTOS_ENTRADA_ITENS.VENDA

então alem de agrupar POR PRODUTO eu tenho tambem quem pegar a ultima entrada daquele produto para mostrar o valor correto.

então pensei que é só pegar a entrada que tiver o campo CODIGO maior, seria ela a ultima entrada (PRODUTOS_ENTRADA_ITENS.CODIGO)

entao como ficaria esse codigo para AGRUPAR POR PRODUTO e mostrar o PREÇO DA ULTIMA ENTRADA daquele produto?
ARES 28/03/2011 13:32:31
#369453
Resposta escolhida
Amigo,

Eu usaria o having

veja esse código e modifique para o seu

.CommandText = [Ô]SELECT vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, Last(vendas.data) AS ultima_compra, cliente.bairro FROM cliente INNER JOIN vendas ON cliente.codigo = vendas.cliente GROUP BY vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, cliente.bairro HAVING (((Last(vendas.data))<= #[Ô] & Format(Me.txtdata, [Ô]mm/dd/yyyy[Ô]) & [Ô]# ))order by 5 desc [Ô]

Com esse código eu busco a última data de compra de cada cliente e repasso para um listview
FEDERHEN 28/03/2011 13:34:46
#369456
Nossa, quantos ENTÃO
WEBIER 28/03/2011 14:31:02
#369477
Citação:

:
Amigo,

Eu usaria o having

veja esse código e modifique para o seu

.CommandText = [Ô]SELECT vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, Last(vendas.data) AS ultima_compra, cliente.bairro FROM cliente INNER JOIN vendas ON cliente.codigo = vendas.cliente GROUP BY vendas.cliente, cliente.nome, cliente.cidade, cliente.codigo, cliente.bairro HAVING (((Last(vendas.data))<= #[Ô] & Format(Me.txtdata, [Ô]mm/dd/yyyy[Ô]) & [Ô]# ))order by 5 desc [Ô]

Com esse código eu busco a última data de compra de cada cliente e repasso para um listview



eu nao entendi muito bem a finalidade do HAVING, entao fiz assim usando parte do que vc me passou:
    SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO[Ô]


[txt-color=#e80000]Deu o erro:
Você tentou executar uma consulta que não inclui a expressão [ô]DESCRICAO[ô] especificada com parte de uma função agregada.[/txt-color]

Como eu faço?
WEBIER 29/03/2011 11:51:52
#369575
alguem ?
ARES 29/03/2011 11:56:08
#369576
Webier,

Você tem que agrupar todos os campos.

tenta assim:

SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO[Ô]

WEBIER 29/03/2011 12:08:36
#369577
Citação:

:
Webier,

Você tem que agrupar todos os campos.

tenta assim:

SQL = [Ô]SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO, Last(PRODUTOS_ENTRADA_ITENS.CODIGO) AS ultima_compra, PRODUTOS_ENTRADA_ITENS.VENDA AS var_Venda FROM PRODUTOS INNER JOIN PRODUTOS_ENTRADA_ITENS ON PRODUTOS.CODIGO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO GROUP BY PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO[Ô]



Deu o erro:
Você tentou executar uma consulta que não inclui a expressão [ô]var_Venda[ô] especificada com parte de uma função agregada.
MARCELO.TREZE 29/03/2011 14:08:07
#369590
tente colocar o var_venda no group by

Tópico encerrado , respostas não são mais permitidas