[firebase-br] RES: Atualizar a tabela B com dados de A

Paulo Geloramo assisinformatica em gmail.com
Sáb Set 8 08:21:23 -03 2018


Bom dia Levi,

Obrigado pela sugestão, mas não entendi
qual seria a forma que você propõe, se
puder detalhar como seria, posso fazer o teste
e postar aqui o resultado.
As duas formas que encontrei para atualizar
estão publicadas abaixo, usando EXECUTE BLOCK  (19 minutos) e
Update com Select (mais de 3 horas - desisti).
Firebid 2.5.8
Não tem Trigger e View
Force Write desligado
Indice para campo ID
Banco Dados 2.5 GB
As tabelas são diferentes
====
UPDATE ESTOQUE Q
SET Q.REMESSA = COALESCE(Q.REMESSA + (
SELECT SUM(I.QUANTIDADE)
FROM NOTA_PONTO_ITEM I
WHERE I.ID_EDICAO = Q.ID_EDICAO AND I.ID_PONTO = Q.ID_PONTO), 0);

UPDATE ESTOQUE Q
SET Q.DEVOLUCAO = COALESCE(Q.DEVOLUCAO + (
SELECT SUM(I.DEVOLUCAO)
FROM CE_PONTO_ITEM I
WHERE I.ID_EDICAO = Q.ID_EDICAO AND I.ID_PONTO = Q.ID_PONTO), 0);

UPDATE ESTOQUE Q
SET Q.VENDA = COALESCE(Q.VENDA + (
SELECT SUM(I.VENDA)
FROM CE_PONTO_ITEM I
WHERE I.ID_EDICAO = Q.ID_EDICAO AND I.ID_PONTO = Q.ID_PONTO), 0);

=====

EXECUTE BLOCK
AS
DECLARE ID_EDICAO INTEGER;
DECLARE ID_PONTO INTEGER;
DECLARE REMESSA INTEGER;
DECLARE DEVOLUCAO INTEGER;
DECLARE VENDA INTEGER;
BEGIN
  FOR SELECT ID_EDICAO, ID_PONTO, QUANTIDADE
      FROM NOTA_PONTO_ITEM
      INTO :ID_EDICAO, :ID_PONTO, :REMESSA DO
  BEGIN
    UPDATE ESTOQUE
    SET REMESSA = COALESCE(REMESSA + :REMESSA, 0)
    WHERE ID_EDICAO = :ID_EDICAO AND ID_PONTO = :ID_PONTO;
  END

  FOR SELECT ID_EDICAO, ID_PONTO, DEVOLUCAO, VENDA
      FROM CE_PONTO_ITEM
      INTO :ID_EDICAO, :ID_PONTO, :DEVOLUCAO, :VENDA DO
  BEGIN
    UPDATE ESTOQUE
    SET DEVOLUCAO = COALESCE(DEVOLUCAO + :DEVOLUCAO, 0), VENDA =
COALESCE(VENDA + :VENDA, 0)
    WHERE ID_EDICAO = :ID_EDICAO AND ID_PONTO = :ID_PONTO;
  END
END

======


--
Paulo Geloramo
www.assisinformatica.com


Em sex, 7 de set de 2018 às 20:35, Levi R. de Freitas <
levi.ribeiro em gmail.com> escreveu:

> Gera um script de atualização através de um select.
>
> Um abraço,
> Levi Ribeiro de Freitas
> Celular: +55 12 98207-2828
> Email: levi.ribeiro em gmail.com
>
> Em 7 de set de 2018, à(s) 15:40, Paulo Geloramo <
> assisinformatica em gmail.com> escreveu:
>
> > As tabelas são diferentes.
> > --
> > Paulo Geloramo
> > www.assisinformatica.com
> >
> >
> > Em sex, 7 de set de 2018 às 13:15, centriscorps em gmail.com <
> > centriscorps em gmail.com> escreveu:
> >
> >> O conteúdo das tabelas A e B são iguais?
> >>
> >> Renato
> >> ______________________________________________
> >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >> Para saber como gerenciar/excluir seu cadastro na lista, use:
> >> http://www.firebase.com.br/fb/artigo.php?id=1107
> >> Para consultar mensagens antigas:
> >> http://www.firebase.com.br/pesquisa_lista.html
> >>
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista