Fazer insert com duas tabelas diferentes

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
wbarrence
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Qui, 06 Out 2011 10:30 am
Localização: SP
--
WABS

Olá Pessoal,

Alguém sabe me informar como eu posso fazer um insert entre duas colunas de tabelas diferentes utilizando uma condição, por exemplo:

tabela1
colunaA - colunaB - colunaC
AB
AC
BC

tabela2
colunaA - colunaB - colunaC

lista (X1,X2,X3...XN)

Se o valor da "tabela1.colunaA" for igual a "AB" então a "tabela2.colunaA" recebe "X1", se o valor da "tabela1.colunaA" for igual a "AC" então a "tabela2.colunaA" recebe "X2", assim sucessivamente. Lembrando que a colunaA da tabela2 receberá os valores de uma lista (X1,X2,X3..XN).

Alguém poderia me ajudar a resolver esse problema.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

talvez seja o caso de fazer um PLSQL...

em select deve dar..
Avatar do usuário
wbarrence
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Qui, 06 Out 2011 10:30 am
Localização: SP
--
WABS

Olá Diego,

Antes de mais nada já fico agradecido pela sua resposta.

Todavia eu ainda não trabalho com o PL/SQL, trabalho somente com DDL, DML e DCL, eu estava estudando (e tentando alguma coisa) com a cláusula "INSERT ALL" e a expressão "CASE", mas ainda não está surtindo resultado, eu tenho 50 linhas para serem atualizadas, e o código SQL para fazer isso ainda está ficando muito comprido.

Você tem alguma outra sugestão?

Att,

Wanderson Barrence
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Sem usar PL/SQL, o jeito é fazer um decode com cada situação, ou então criar uma tabela temporaria com a relação dos respectivos códigos de cada tabela, a não ser que exista alguma regra para criação da coluna A da tabela B.

Selecionar tudo

insert into tabela2 t2 (colunaA, colunaB, colunaC)
select decode( t1.colunaA
             , 'AB', 'X1'
             , 'AC', 'X2'
             , 'BC', 'X3'
             /*
             , ... etc
             */
             )
     , t1.colunaB
     , t1.colunaC
from   tabela1 t1
Avatar do usuário
wbarrence
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Qui, 06 Out 2011 10:30 am
Localização: SP
--
WABS

Na verdade também o INSERT INTO também não funcionou, devido ao fato de que as outras colunas da "tabela 2" já possuírem registros, então eu tentei com o comando UPDATE, e desta maneira eu só consegui só consegui resolver o meu problema fazendo o UPDATE de cada registro da coluna um a um.

Se alguém tiver uma ideia melhor eu aceito sugestões.

Att,

Wanderson Barrence
Responder
  • Informação