Alimentar alguns campos de uma tabela com os de outra tabela

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Tsmiza
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 11 Jun 2013 10:03 am

Olá pessoal, Boa tarde. Sou iniciante na utilização das ferramentas Oracle e no fórum também, se eu cometer algum equívoco já peço desculpas aos usuários e administradores.


Quero atualizar dos campos da tabela tributacao_icms utilizando os valores dos campos da tabela tributacoes.


Nome de Tabela: tributacoes

Campos(A,B, C,D,E,F,G,H, I, J) da tabela tributacoes com valores:

A B C D E F G H I J
4 1 10 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 N
2 1 10 12,0000 17,0000 26,5700 26,5700 35,0000 35,0000 N
3 1 10 7,0000 17,0000 26,5700 26,5700 35,0000 35,0000 N
4 1 10 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 N
1 1 10 17,0000 17,0000 26,5700 26,5700 35,0000 35,0000 S
2 1 10 12,0000 17,0000 26,5700 26,5700 35,0000 35,0000 N
1 1 10 17,0000 17,0000 26,5700 26,5700 35,0000 35,0000 S
3 1 10 7,0000 17,0000 26,5700 26,5700 35,0000 35,0000 N



Nome de Tabela: tributacao_icms

Campos(AB,CD,EF,GH,IJ,LM,NO,porque) da tabela tributacoes com valores:

AB CD EF GH IJ LM NO porque
1 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
1 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
2 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
2 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
3 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
3 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
4 10 0,0000 0,0000 0,0000 0,0000 0,0000 N
4 10 0,0000 0,0000 0,0000 0,0000 0,0000 N



Já tentei fazer utilizando o comando update, mas não deu certo!

Selecionar tudo

update tributacao_icms tn
   set tn.AB =
       (select t.A
          from tributacoes t
         where t.C = tn.CD
           and t.C = '10');

Utilizo o PL/SQL Developer como ferramenta de SGBD.

Se algum puder me ajudar, agradeço desde já!
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Cara,não entendi perfeitamente.
Primeiro esse teu update não funciona. você ta colocando este subselect e vai dar erro.
Deveria fazer um cursor com os valores e o campo de relacionamento e fazer algo do tipo:

Selecionar tudo

update tributacao_icms tn
   set tn.AB = meu_cursor.A
  where tn.CD = meu_cursor.C
......
não entendi bem a questao de qual campo você quer atualizar e qual o relacionamento.
Tsmiza
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 11 Jun 2013 10:03 am

Boa Tarde Daniel, primeiramente obrigado pela dica.

Vou tentar simplificar a questão! Tecnicamente não sei explicar exatamente o que preciso, pois estou iniciante no mundo Oracle.
Quero simplesmente alimentar os campos da tabela tributacao_icms com os dados que existem nos campos da tabela tributacoes, sem ter que digitar um por um novamente.creio que tenho que usar o comando update.!

As tabelas são quase iguais, o que muda são alguns campos, mas ela possui um campo com chave primeira, que posso usar como referência.
Tsmiza
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 11 Jun 2013 10:03 am

Prezados colegas,

Alguém poderia me ajudar!!!?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olha o exemplo de cursor em:
http://www.techonthenet.com/oracle/loops/cursor_for.php

No cursor você seleciona sua tabela que contém os dados (tributações).
Dentro do loop você faz o update da tributações_icms, como disse anteriormente.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes