duvida sobre consulta SQL
Caros ao realizar uma consulta SQL para me retornar adiferenca de entrada e saida de produtos com group by nao consegui prosseguir pois a consulta nao me retona valor algum, peco a ajuda a vcs para resolver esta questao pois a meu ver a consulta esta correta. utilizo FIREBIRD + IBEXPERT + DELPHI 7
segue a consulta:
SELECT p.descricao,sum(v.qtd), SUM (E.QTD)
fROM produto P ,venda v ,entradas E
WHERE p.id_prod = v.id_produto AND
E.id_produto = V.id_produto
GROUP BY p.descricao estrutura das tabelas tabela produto id_produto descricao_produto tabela venda id_venda id_produto qtd tabela entrada id_entrada id_produto qtd desde ja agradeco a ajuda
SELECT p.descricao,sum(v.qtd), SUM (E.QTD)
fROM produto P ,venda v ,entradas E
WHERE p.id_prod = v.id_produto AND
E.id_produto = V.id_produto
GROUP BY p.descricao estrutura das tabelas tabela produto id_produto descricao_produto tabela venda id_venda id_produto qtd tabela entrada id_entrada id_produto qtd desde ja agradeco a ajuda
Miguel
Curtidas 0
Respostas
Leonardo Xavier
16/02/2011
Tente com like
SELECT p.descricao,sum(v.qtd), SUM (E.QTD) fROM produto P ,venda v ,entradas E LIKE p.id_prod = v.id_produto AND E.id_produto = V.id_produto GROUP BY p.descricao
GOSTEI 0
Emerson Nascimento
16/02/2011
recomendo a você fazar join explícitos. fica mais fácil pra nós - que não desenhamos e nem temos o seu banco de dados - entendermos como são feitos os relacionamentos.
outra coisa: creio que não apareça nada porque você está efetuando inner joins e, se alguma tabela não tiver conteúdo que atenda ao relacionamento, nada é trazido. use left join.
SELECT
p.descricao, coalesce(sum(v.qtd),0) saidas,
(select coalesce(sum(E.QTD),0)
from entradas E
where E.id_produto = P.id_produto) entradas
FROM produto P
LEFT JOIN venda v on v.id_produto = P.id_produto
GROUP BY p.descricao
- geralmente não se agrupa por descrição e sim por código/id ou código/id + descrição.
- foi preciso utilizar sub-selects porque de outra forma os valores poderiam aparcerem multiplicados.
outra coisa: creio que não apareça nada porque você está efetuando inner joins e, se alguma tabela não tiver conteúdo que atenda ao relacionamento, nada é trazido. use left join.
SELECT
p.descricao, coalesce(sum(v.qtd),0) saidas,
(select coalesce(sum(E.QTD),0)
from entradas E
where E.id_produto = P.id_produto) entradas
FROM produto P
LEFT JOIN venda v on v.id_produto = P.id_produto
GROUP BY p.descricao
- geralmente não se agrupa por descrição e sim por código/id ou código/id + descrição.
- foi preciso utilizar sub-selects porque de outra forma os valores poderiam aparcerem multiplicados.
GOSTEI 0