Pesquisar em duas tabelas?
Olá pessoal!
Gostaria de criar um relatório de __/___/___ a __/__/__ que me fornecesse o estoque de entrada e de saída dos produtos. Para isso tenho a seguinte estrutura:
TblProdutos: CodProduto, Nome, ValorUnit, Quant;
TblVendas: N_Pedido, DataVenda, CodCliente, ValorTotal
TblProdSaida: N_pedido, codproduto, quantidade, valorunit, valorprod;
Entr_estoque: Data_Hora_Entrada, Cod_Produto, Quant, Caixa, ValorUnit.
As tabelas que tem as informações que quero são TblProdSaida e Entr_Estoque. Informo, ainda, que a TblProdVendas é vincula a TblVendas.
Será que alguém poderia me ajudar a fazer uma instrução sql que eu consiga obter esses resultados em um só relatório.
OBS: O banco de dados que uso é o Firebird 1.0 e acesso o mesmo através da paleta DbExpress.
Obrigado!
Gostaria de criar um relatório de __/___/___ a __/__/__ que me fornecesse o estoque de entrada e de saída dos produtos. Para isso tenho a seguinte estrutura:
TblProdutos: CodProduto, Nome, ValorUnit, Quant;
TblVendas: N_Pedido, DataVenda, CodCliente, ValorTotal
TblProdSaida: N_pedido, codproduto, quantidade, valorunit, valorprod;
Entr_estoque: Data_Hora_Entrada, Cod_Produto, Quant, Caixa, ValorUnit.
As tabelas que tem as informações que quero são TblProdSaida e Entr_Estoque. Informo, ainda, que a TblProdVendas é vincula a TblVendas.
Será que alguém poderia me ajudar a fazer uma instrução sql que eu consiga obter esses resultados em um só relatório.
OBS: O banco de dados que uso é o Firebird 1.0 e acesso o mesmo através da paleta DbExpress.
Obrigado!
E_marcello
Curtidas 0
Respostas
Flavialr
12/01/2004
Oi, tente assim:
´Select Pro.CodProduto, Pro.Nome, Pro.Quant, Count(Sai.quantidade) Saidas, Count(Ent.Quant) Entradas
From TblProdutos Pro, TblVendas Vend, TblProdSaida Sai, Entr_estoque Ent
Where Pro.CodProduto = :codproduto
and Vend.datavenda between :dataini and :datafim
and Pro.CodProduto = Sai.codproduto and pro.codproduto = Ent.cod_produto and Ent.Data_hora_entrada between :dataini and :datafim
Group by pro.codproduto, pro.nome´
Não sei se é bem assim que vc quer... se for só as entradas e saidas vai funcionar...
Tenha um bom dia! :)
Flavia
´Select Pro.CodProduto, Pro.Nome, Pro.Quant, Count(Sai.quantidade) Saidas, Count(Ent.Quant) Entradas
From TblProdutos Pro, TblVendas Vend, TblProdSaida Sai, Entr_estoque Ent
Where Pro.CodProduto = :codproduto
and Vend.datavenda between :dataini and :datafim
and Pro.CodProduto = Sai.codproduto and pro.codproduto = Ent.cod_produto and Ent.Data_hora_entrada between :dataini and :datafim
Group by pro.codproduto, pro.nome´
Não sei se é bem assim que vc quer... se for só as entradas e saidas vai funcionar...
Tenha um bom dia! :)
Flavia
GOSTEI 0
Flavialr
12/01/2004
Ah! desculpe... não use COUNT(QUANTIDADE) mas sim SUM(QUANTIDADE), OK?
GOSTEI 0
E_marcello
12/01/2004
Agradeço a resposta, mas quando tento realizar a pesquisa não aparece nenhum dado.
OBS: retirei do código o pro.Quant, pois quando tentava realizar a pesquisa dava um erro de referência.
Será que alguém pode me ajudar?
OBS: retirei do código o pro.Quant, pois quando tentava realizar a pesquisa dava um erro de referência.
Será que alguém pode me ajudar?
GOSTEI 0
E_marcello
12/01/2004
Será que alguem tem uma dica?
GOSTEI 0
Paulo_amorim
12/01/2004
Olá
A faixa de data eh data DE QUE? de compra? de venda?Voce nao especificou bem...
essa query se refere à data de venda.
tambem nao sabia a que se referia ESTOQUE DE SAIDA, entao assumi como da tabela TblProdSaida...
a query soh trará produtos que tenham sido vendidos pelo menos uma vez...se vc quiser todos MESMO, troque o INNER JOIN por um LEFT OUTER JOIN (P.cod_produto *= S.cod_produto)...
creio que assim funciona
claro que nao ha nenhum agrupamento na query, isso vc pode fazre de acordo com o que lhe for conveniente
SELECT P.cod_produto, E.quant, S.quantidade
FROM TblProdutos P, TblVendas V, TblProdSaida S, Entr_estoque E
WHERE V.n_pedido = S.n_pedido
AND P.cod_produto = S.cod_produto
AND P.cod_produto = E.cod_produto
AND V.datavenda BETWEEN :Ini AND :Fim
[]´s
A faixa de data eh data DE QUE? de compra? de venda?Voce nao especificou bem...
essa query se refere à data de venda.
tambem nao sabia a que se referia ESTOQUE DE SAIDA, entao assumi como da tabela TblProdSaida...
a query soh trará produtos que tenham sido vendidos pelo menos uma vez...se vc quiser todos MESMO, troque o INNER JOIN por um LEFT OUTER JOIN (P.cod_produto *= S.cod_produto)...
creio que assim funciona
claro que nao ha nenhum agrupamento na query, isso vc pode fazre de acordo com o que lhe for conveniente
SELECT P.cod_produto, E.quant, S.quantidade
FROM TblProdutos P, TblVendas V, TblProdSaida S, Entr_estoque E
WHERE V.n_pedido = S.n_pedido
AND P.cod_produto = S.cod_produto
AND P.cod_produto = E.cod_produto
AND V.datavenda BETWEEN :Ini AND :Fim
[]´s
GOSTEI 0
Paulo_amorim
12/01/2004
Olá
A faixa de data eh data DE QUE? de compra? de venda?Voce nao especificou bem...
essa query se refere à data de venda.
tambem nao sabia a que se referia ESTOQUE DE SAIDA, entao assumi como da tabela TblProdSaida...
a query soh trará produtos que tenham sido vendidos pelo menos uma vez...se vc quiser todos MESMO, troque o INNER JOIN por um LEFT OUTER JOIN (P.cod_produto *= S.cod_produto)...
creio que assim funciona
claro que nao ha nenhum agrupamento na query, isso vc pode fazre de acordo com o que lhe for conveniente
SELECT P.cod_produto, E.quant, S.quantidade
FROM TblProdutos P, TblVendas V, TblProdSaida S, Entr_estoque E
WHERE V.n_pedido = S.n_pedido
AND P.cod_produto = S.cod_produto
AND P.cod_produto = E.cod_produto
AND V.datavenda BETWEEN :Ini AND :Fim
[]´s
A faixa de data eh data DE QUE? de compra? de venda?Voce nao especificou bem...
essa query se refere à data de venda.
tambem nao sabia a que se referia ESTOQUE DE SAIDA, entao assumi como da tabela TblProdSaida...
a query soh trará produtos que tenham sido vendidos pelo menos uma vez...se vc quiser todos MESMO, troque o INNER JOIN por um LEFT OUTER JOIN (P.cod_produto *= S.cod_produto)...
creio que assim funciona
claro que nao ha nenhum agrupamento na query, isso vc pode fazre de acordo com o que lhe for conveniente
SELECT P.cod_produto, E.quant, S.quantidade
FROM TblProdutos P, TblVendas V, TblProdSaida S, Entr_estoque E
WHERE V.n_pedido = S.n_pedido
AND P.cod_produto = S.cod_produto
AND P.cod_produto = E.cod_produto
AND V.datavenda BETWEEN :Ini AND :Fim
[]´s
GOSTEI 0