Fórum Por que tanto tempo para abrir uma query? #222154
24/03/2004
0
O que poderia ser? Uso Firebird.
Obrigado
SELECT PRODUTOS.CODIGO,
PRODUTOS.DESCRICAO as DESCRPRODUTO,
(Select sum (MOVIESTOQUE.QUANTIDADE)
from MOVIESTOQUE
Where MOVIESTOQUE.OPERACAO = ´E´
and PRODUTOS.CODIGO = MOVIESTOQUE.PRODUTO) as SubTotalEntrada,
(Select sum (MOVIESTOQUE.QUANTIDADE)
from MOVIESTOQUE
Where MOVIESTOQUE.OPERACAO = ´S´
and PRODUTOS.CODIGO = MOVIESTOQUE.PRODUTO) as SubTotalSaida
from PRODUTOS
Valdirdill
Curtir tópico
+ 0Posts
25/03/2004
Lucas Silva
Dê uma olhada no fórum de interbase, que lá tem a explicação de como reparar um BD!
Gostei + 0
25/03/2004
Rômulo Barros
Gostei + 0
25/03/2004
Emerson Nascimento
tente alterar para:
SELECT PROD.CODIGO, PROD.DESCRICAO as DESCRPRODUTO,
        (Select sum (MOV_E.QUANTIDADE)
          from MOVIESTOQUE MOV_E
          Where MOV_E.OPERACAO = ´E´
          and MOV_E.PRODUTO = PROD.CODIGO) as SubTotalEntrada,
        (Select sum (MOV_S.QUANTIDADE)
          from MOVIESTOQUE MOV_S
          Where MOV_S.OPERACAO = ´S´
          and MOV_S.PRODUTO = PROD.CODIGO) as SubTotalSaida
from PRODUTOS
where....
ou:
SELECT PROD.CODIGO, PROD.DESCRICAO DESCRPRODUTO,
          sum(MOV_E.QUANTIDADE) SubTotalEntrada,
          sum(MOV_S.QUANTIDADE) SubTotalSaida,
from PRODUTOS PROD
left join MOVIESTOQUE MOV_E on (MOV_E.PRODUTO = PROD.CODIGO AND MOV_E.OPERACAO = ´E´)
left join MOVIESTOQUE MOV_S on (MOV_S.PRODUTO = PROD.CODIGO AND MOV_E.OPERACAO = ´S´)
where.....
group by PROD.CODIGO
Gostei + 0
25/03/2004
Ilopaiz
Gostei + 0
25/03/2004
Weber
Vamos interpretar seu Select.
SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO as DESCRPRODUTO, (Select sum (MOVIESTOQUE.QUANTIDADE) from MOVIESTOQUE Where MOVIESTOQUE.OPERACAO = ´E´ and PRODUTOS.CODIGO = MOVIESTOQUE.PRODUTO) as SubTotalEntrada, (Select sum (MOVIESTOQUE.QUANTIDADE) from MOVIESTOQUE Where MOVIESTOQUE.OPERACAO = ´S´ and PRODUTOS.CODIGO = MOVIESTOQUE.PRODUTO) as SubTotalSaida from PRODUTOS
Veja bem o que acontece, para cada produto da tabela Produtos são feitos mais dois Select na tabela MoviEstoque. Dessa forma se você 100 produtos são feitos 200 select´s na Tabela MoviEstoque. É por isso que acaba ficando lento.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)