Ultima venda de um determinado produto

Firebird

22/10/2008

Olá a todos!!!
Alguem poderia me ajudar na seguinte questao: Preciso determinar qdo e qto foi vendido um determinado produto.
Tentei a seguinte instrucao:
select produtos.descricao, itensvenda.idproduto, itensvenda.qtd, vendas.data
from vendas
inner join itensvenda on (vendas.nrvenda = itensvenda.nrvenda)
inner join produtos on (itensvenda.idproduto = produtos.idproduto)

Mas repetiu varias vezes o produto
[]´s
Evaristo


T3r3son

T3r3son

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

22/10/2008

de um único produto:
select
  prod.descricao, v.data,
  iv.idproduto, iv.qtd, iv.valorunitario
from
  produtos prod
inner join
  itensvenda iv on iv.idproduto = prod.idproduto
inner join
  vendas v on v.nrvenda = iv.nrvenda
where
  prod.idproduto = produtosolicitado and
  v.data = 
  (select max(v2.data)
   from itensvenda iv2
   inner join venda v2 on v2.nrvenda = iv2.nrvenda
   where iv2.idproduto = prod.idproduto)


de TODOS os produtos (tire a codição de avaliação do produto do where):
select
  prod.descricao, v.data,
  iv.idproduto, iv.qtd, iv.valorunitario
from
  produtos prod
inner join
  itensvenda iv on iv.idproduto = prod.idproduto
inner join
  vendas v on v.nrvenda = iv.nrvenda
where
  v.data = 
  (select max(v2.data)
   from itensvenda iv2
   inner join venda v2 on v2.nrvenda = iv2.nrvenda
   where iv2.idproduto = prod.idproduto)

espero que seja isso...


GOSTEI 0
T3r3son

T3r3son

22/10/2008

Obrigado, Emerson!!!
Mas nessa ultima instrucao, é totalizado os produtos vendidos. Preciso que seja mostrado a ultima venda e qtde dos produtos bem como a compra. Lembro-lhe que, se o produto nao foi comprado deve sair na consulta. Ou seja, o importante nesse caso seria a venda do produto. Digamos que tenha uma certa qtde de um produto no estoque a 3 meses e vendo todos. Nesse caso eu preciso saber se esta vendendo ou nao. Pela data de compra eu saberia se esta ou nao girando o estoque ou foi uma simples coincidencia ter vendido o produto. Isso me serve para fazer uma reposicao do estoque com base nos produtos que vendem diariamente e nao que vendem uam vez ou outra
[]´s
Evaristo


GOSTEI 0
T3r3son

T3r3son

22/10/2008

Ops!!!
Um erro de interpretacao minha: Não é totalizado o item, mas a data mostrada nao é a ultima data da venda do item.
[]´s
Evaristo


GOSTEI 0
T3r3son

T3r3son

22/10/2008

Alguém se habilita?? Ou são a maioria como eu???
[]´s
Evaristo


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/10/2008

qual é o campo chave da tabela ´itensvenda´ ?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/10/2008

tente assim...
para saber a última data de venda de cada produto:
select
  prod.idproduto, prod.descricao, max(v.data) ultima_venda
from
  produtos prod
inner join
  itensvenda iv on iv.idproduto = prod.idproduto
inner join
  vendas v on v.nrvenda = iv.nrvenda
group by
  prod.idproduto, prod.descricao

para saber qual foi o último item vendido e a última data de venda de cada produto:
select
  prod.idproduto, prod.descricao, v.data ultima_venda,
  iv.idproduto, iv.qtd, iv.valorunitario
from
  produtos prod
inner join
  itensvenda iv on iv.idproduto = prod.idproduto
inner join
  vendas v on v.nrvenda = iv.nrvenda
where
  iv.iditensvenda = -- supondo que ´iditensvenda´ seja
  (select top 1     -- o campo chave da tabela ´itensvenda´
     iv2.iditensvenda
   from
     itensvenda iv2
   inner join
     vendas v2 on v2.nrvenda = iv2.nrvenda
   where
     iv2.idproduto = iv.idproduto
   order by
     v2.data desc)

bom, creio que seja isso...
mas só vai funcionar em função do campo chave da tabela itensvenda


GOSTEI 0
T3r3son

T3r3son

22/10/2008

IDVENDA,IDPRODUTO,ITEM - ItensVenda
IDVENDA - VENDAS
IDPRODUTO - PRODUTOS


GOSTEI 0
Elisangela Silva

Elisangela Silva

22/10/2008

Obrigadão
Emerson

Asimm como vc falou:
tente assim...
para saber a última data de venda de cada produto:
[code:1:8fdc1d6743]select
 prod.idproduto, prod.descricao, max(v.data) ultima_venda
from
 produtos prod
inner join
 itensvenda iv on iv.idproduto = prod.idproduto
inner join
 vendas v on v.nrvenda = iv.nrvenda
group by
 prod.idproduto, prod.descricao


Deu certinho
Obrigado
GOSTEI 0
T3r3son

T3r3son

22/10/2008

Mas e o periodo que eu especificar vc vai incluir na instrução onde???
GOSTEI 0
Elisangela Silva

Elisangela Silva

22/10/2008

O período esta especificado nesta parte
max(v.data) ultima_venda


ele vai pegar a ultima venda do produto
GOSTEI 0
T3r3son

T3r3son

22/10/2008

Vc nao entendeu: quero especificar o periodo em que vou mostrar a ultima venda de um produto. 01/01/2013 - 28/02/2013, confere???
GOSTEI 0
Elisangela Silva

Elisangela Silva

22/10/2008

Para especificar o período em que vou mostrar a ultima venda de um determinado produto ficaria assim:

Select P.ProdId,P.Nome,max(v.DT) ultima_venda
from  produto P
inner join  item_venda IV on IV.ProdId = P.ProdId
inner join  venda v on v.NFiscal = IV.NFiscal
where DT BETWEEN 2013-01-01 AND 2013-03-19
group by  P.ProdId,P.Nome



lembrando que esse comando é valido em mysql, no caso vc precisa adaptar
para o seu gerenciador de banco de dados...
GOSTEI 0
POSTAR