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

Levi R. de Freitas levi.ribeiro em gmail.com
Sáb Set 8 11:26:19 -03 2018


Bom dia!

Faz apenas um selec com todas as informações que precisa atualizar na tabela estoque, trazendo os campos Chaves.

Pelo ibexpert gera o script de atualização informando tabela e where.

Pra grandes massas de dados tenho feito e funciona.

Um abraço,
Levi Ribeiro de Freitas
Celular: +55 12 98207-2828
Email: levi.ribeiro em gmail.com

Em 8 de set de 2018, à(s) 08:21, Paulo Geloramo <assisinformatica em gmail.com> escreveu:

> 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
>> 
> ______________________________________________
> 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