GARANTIR DESCONTO

Fórum Por uma dessas view abre rápido e a outra demora tanto? #43450

25/03/2004

0

Minha necessidade: preciso criar uma view, como na opção 2 abaixo. Ela funciona só que demora uma eternidade para abrir a query cuja instrução SQL é ´SELECT PRODUTO, SUM(ENTRADAS), SUM(SAIDAS) FROM VIEWMOVIESTOQUE2 GROUP BY PRODUTO´. Mas, se eu fizer a mesma instrução, usando a opção/view 1 ´´SELECT PRODUTO, SUM(ENTRADAS), SUM(SAIDAS) FROM VIEWMOVIESTOQUE GROUP BY PRODUTO´ não demora nada.
O que poderia ser que demora tanto? Como poderia fazer para carregar a descrição do produto sem que demore tanto?
Uso BD Firebird
Obrigado.

CRIAÇÃO DE VIEW - OPÇÃO 1

CREATE VIEW VIEWMOVIESTOQUE(PRODUTO, DATA, OPERACAO, ENTRADAS, SAIDAS) AS
SELECT PRODUTO, DATA, OPERACAO,
CAST (0 AS NUMERIC (18,3))AS ENTRADAS,
CAST(QUANTIDADE AS NUMERIC(18,3)) AS SAIDAS
FROM MOVIESTOQUE WHERE OPERACAO = ´E´
UNION ALL
SELECT PRODUTO, DATA, OPERACAO,
CAST(QUANTIDADE AS NUMERIC (18,3))AS SAIDAS,
CAST(0 AS NUMERIC(18,3)) AS ENTRADAS
FROM MOVIESTOQUE WHERE OPERACAO = ´S´


CRIAÇÃO DE VIEW - OPÇÃO 2

CREATE VIEW VIEWMOVIESTOQUE2 (DESCRICAO, PRODUTO, DATA, OPERACAO, ENTRADAS, SAIDAS) AS
SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO,
CAST (0 AS NUMERIC (18,3))AS ENTRADAS,
CAST(QUANTIDADE AS NUMERIC(18,3)) AS SAIDAS
FROM MOVIESTOQUE MOV, PRODUTOS PROD WHERE OPERACAO = ´E´
UNION ALL
SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO,
CAST(QUANTIDADE AS NUMERIC (18,3))AS SAIDAS,
CAST(0 AS NUMERIC(18,3)) AS ENTRADAS
FROM MOVIESTOQUE MOV, PRODUTOS PROD WHERE MOV.OPERACAO = ´S´


Valdirdill

Valdirdill

Responder

Posts

25/03/2004

Afarias

O problema na Opção 2 é q vc tem 2 tabelas (MOVIMENTOS E PRODUTOS) e não estabeleceu uma relação entre elas (JOIN)


T+


Responder

Gostei + 0

26/03/2004

Valdirdill

Você poderia me ajudar a fazer isso, ou seja, estabelecer esse join? Como ficaria a segunda instrução?
Obrigado

O problema na Opção 2 é q vc tem 2 tabelas (MOVIMENTOS E PRODUTOS) e não estabeleceu uma relação entre elas (JOIN) T+



Responder

Gostei + 0

26/03/2004

Afarias

CREATE VIEW VIEWMOVIESTOQUE2 (DESCRICAO, PRODUTO, DATA, OPERACAO, ENTRADAS, SAIDAS) AS 
SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO, 
CAST (0 AS NUMERIC (18,3)) AS ENTRADAS, 
CAST(MOV.QUANTIDADE AS NUMERIC(18,3)) AS SAIDAS 
FROM MOVIESTOQUE MOV
INNER JOIN PRODUTOS PROD ON (PROD.CODIGO=MOV.PRODUTO)
WHERE MOV.OPERACAO = ´E´ 

UNION ALL

SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO, 
CAST(MOV.QUANTIDADE AS NUMERIC (18,3))AS SAIDAS, 
CAST(0 AS NUMERIC(18,3)) AS ENTRADAS 
FROM MOVIESTOQUE MOV
INNER JOIN PRODUTOS PROD ON (PROD.CODIGO=MOV.PRODUTO)
WHERE MOV.OPERACAO = ´S´



T+


Responder

Gostei + 0

26/03/2004

Valdirdill

Value Afarias. Funcionou que é um brinco.
Obrigadíssimo.

CREATE VIEW VIEWMOVIESTOQUE2 (DESCRICAO, PRODUTO, DATA, OPERACAO, ENTRADAS, SAIDAS) AS 
SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO, 
CAST (0 AS NUMERIC (18,3)) AS ENTRADAS, 
CAST(MOV.QUANTIDADE AS NUMERIC(18,3)) AS SAIDAS 
FROM MOVIESTOQUE MOV
INNER JOIN PRODUTOS PROD ON (PROD.CODIGO=MOV.PRODUTO)
WHERE MOV.OPERACAO = ´E´ 

UNION ALL

SELECT PROD.DESCRICAO, MOV.PRODUTO, MOV.DATA, MOV.OPERACAO, 
CAST(MOV.QUANTIDADE AS NUMERIC (18,3))AS SAIDAS, 
CAST(0 AS NUMERIC(18,3)) AS ENTRADAS 
FROM MOVIESTOQUE MOV
INNER JOIN PRODUTOS PROD ON (PROD.CODIGO=MOV.PRODUTO)
WHERE MOV.OPERACAO = ´S´
T+



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar