Ajuda com query.
27/05/2010
0
Pessoal estou com o seguinte problema e preciso de um help.
Estou tentando criar um query doida varrida, bom meu problema e o seguinte:
Tenho 5 tabelas:
TAB1 = TAB_PRODUTOS
ID
DESCRICAO
VALOR
1
PLACA MAE
135,00
TAB2 = TAB_ENTRADAPRODNF
ID
IDPROD
QTDA
1
1
3
TAB3 = TAB_ENTRADAPROD
ID
IDPROD
QTDA
1
1
0
TAB3 = TAB_SAIDAPROD
ID
IDPROD
QTDA
1
1
5
TAB4 = TAB_SAIDAPRODNF
ID
IDPROD
QTDA
null
null
null
Quero que minha query some as "qtda" da TAB2 + TAB3 e subtraia as "QTDA" da TAB3 - TAB4
Assim me informando o total geral.
Otimo ate ai tudo bem ele soma e subtrai e me mostra o resultado, mas com um porem se uma das tabelas nao tiver o valor ele não faz o sum.
Estou utilizando essa query para gerar essa regra mas sem futuro.
select tab1.id, tab1.descricao, tab1.preco_venda, tab2.quantidade, tab3.quantidade, tab4.quantidade, tab5.quantidade, sum((tab2.quantidade)+(tab4.quantidade)+(tab3.quantidade)+(tab5.quantidade)) from tab_produtos TAB1 left join tab_entradaprod tab2 ON tab1.id = tab2.idprod left join tab_saidaprod tab3 on tab1.id = tab3.idprod left join tab_entradaprodnf tab4 on tab1.id = tab4.idprod left join tab_saidaprodnf tab5 on tab1.id = tab5.idprod where tab1.descricao like 'PLACA%' group by tab1.id, tab1.descricao, tab1.preco_venda, tab2.quantidade, tab3.quantidade, tab4.quantidade, tab5.quantidade
Alguem teria uma luz para me dar .
[]´s
Alex Araujo
Posts
27/05/2010
Alex Araujo
Resolvido.
Utilizei da seguinte forma:
select tab1.id, tab1.descricao, tab1.preco_venda, tab2.quantidade, tab3.quantidade, tab4.quantidade, tab5.quantidade, sum((COALESCE(tab2.quantidade,0))+(COALESCE(tab4.quantidade,0))-(COALESCE(tab3.quantidade,0))+(COALESCE(tab5.quantidade,0))) from tab_produtos TAB1 left join tab_entradaprod tab2 ON tab1.id = tab2.idprod left join tab_saidaprod tab3 on tab1.id = tab3.idprod left join tab_entradaprodnf tab4 on tab1.id = tab4.idprod left join tab_saidaprodnf tab5 on tab1.id = tab5.idprod where tab1.descricao like 'PLACA%' group by tab1.id, tab1.descricao, tab1.preco_venda, tab2.quantidade, tab3.quantidade, tab4.quantidade, tab5.quantidade
[]´s
27/05/2010
Alex Araujo
Agora a query correta.
select tab1.id, tab1.descricao, tab1.preco_venda, (select (sum (quantidade)) from tab_entradaprod), (select (sum (quantidade)) from tab_entradaprodnf), (select (sum (quantidade)) from tab_saidaprod), (select (sum (quantidade)) from tab_saidaprodnf), sum((select (sum (quantidade)) from tab_entradaprod)+((select (sum (quantidade)) from tab_entradaprodnf))- ((select (sum (quantidade)) from tab_saidaprod))-((select (sum (quantidade)) from tab_saidaprodnf))) from tab_produtos TAB1 where tab1.descricao like 'PLACA%' group by tab1.id, tab1.descricao, tab1.preco_venda
[]s
21/08/2010
Emerson Nascimento
Agora a query correta.
select tab1.id, tab1.descricao, tab1.preco_venda, (select (sum (quantidade)) from tab_entradaprod), (select (sum (quantidade)) from tab_entradaprodnf), (select (sum (quantidade)) from tab_saidaprod), (select (sum (quantidade)) from tab_saidaprodnf), sum((select (sum (quantidade)) from tab_entradaprod)+((select (sum (quantidade)) from tab_entradaprodnf))- ((select (sum (quantidade)) from tab_saidaprod))-((select (sum (quantidade)) from tab_saidaprodnf))) from tab_produtos TAB1 where tab1.descricao like 'PLACA%' group by tab1.id, tab1.descricao, tab1.preco_venda
[]s
esta query está correta??? onde, nas subselects, você está relacionando o produto?
creio que o correto seja:
select
tab1.id,
tab1.descricao,
tab1.preco_venda,
(select coalesce(sum(ep.quantidade),0) from tab_entradaprod ep where ep.idprod = tab1.id) qtdentrada,
(select coalesce(sum(enf.quantidade),0) from tab_entradaprodnf enf where enf.idprod = tab1.id) qtdentradanf,
(select coalesce(sum(sp.quantidade),0) from tab_saidaprod sp where sp.idprod = tab1.id) qtdsaida,
(select coalesce(sum(snf.quantidade),0) from tab_saidaprodnf snf where snf.idprod = tab1.id) qtdsaidanf,
(select coalesce(sum(ep.quantidade),0) from tab_entradaprod ep where ep.idprod = tab1.id)+
(select coalesce(sum(enf.quantidade),0) from tab_entradaprodnf enf where enf.idprod = tab1.id)-
(select coalesce(sum(sp.quantidade),0) from tab_saidaprod sp where sp.idprod = tab1.id)-
(select coalesce(sum(snf.quantidade),0) from tab_saidaprodnf snf where snf.idprod = tab1.id) total
from
tab_produtos TAB1
where
tab1.descricao like 'PLACA%'
group by
tab1.id,
tab1.descricao,
tab1.preco_venda
veja se é isso mesmo ou se eu estou falando bobagem...
23/08/2010
Eriley Barbosa
Clique aqui para fazer login e interagir na Comunidade :)