Select em uma tabela update em outra

1 resposta Resolvido
mysql
brizola727

Boa tarde, estou arrumando um erro no sistema e para que passe a funcionar perfeitamente o ideal seria rodar um script no banco para copiar os ids de uma tabela e passar pra outra. Vou explicar melhor.
Por exemplo, temos uma tabela de clientes e uma tabela de pedidos ok?
Na tabela de pedidos deveria ter uma fk da de clientes para trazer os dados do cliente, porém na modelagem o cara colocou o nome do cliente. Ou seja, quando o cara muda o nome do cliente, no pedido não muda.

O que aconteceu foi mais ou menos isso, é um pouco mais complexo pq existem tipos de clientes e etc. Porém a logica no java eu ja fiz pra corrigir o problema, agora eu queria ajuda de um dba ou alguém que manje de banco pra fazer um script que funcione assim:

Que ele vá na tabela de PEDIDOS pegue o NOME do cliente e vá na tabela de CLIENTES pegue o ID correspondente e salve na coluna idCliente que eu criei agora na tabela de PEDIDOS. se possível ele pular caso o NOME não exista na tabela de clientes pois é bem possível que alguns tenha sido alterados.

É possível fazer isso?

Alguém poderia me dar um norte de como fazer esse script.

Obrigado!

1 Resposta

brizola727
Solucao aceita

Consegui resolver, a quem interessar:

begin

for r in (SELECT * FROM TR_PRODUCT A INNER JOIN TR_RL_BUDGET_COMP B ON (<a href="http://A.NAME">A.NAME</a> = B.COMPONENT) WHERE B.COMPONENT_TYPE = 1) loop

update TR_RL_BUDGET_COMP

SET TR_RL_BUDGET_COMP.PRODUCT_ID = r.id_product

where TR_RL_BUDGET_COMP.Component = <a href="http://r.name">r.name</a>;

end loop;

end;
begin

for r in (SELECT * FROM TR_STUFF  INNER JOIN TR_RL_BUDGET_COMP B ON (TR_STUFF.NAME_STUFF = B.COMPONENT) WHERE B.COMPONENT_TYPE = 2) loop

update TR_RL_BUDGET_COMP

SET TR_RL_BUDGET_COMP.Stuff_Id = r.Stuff_Id

where TR_RL_BUDGET_COMP.Component = r.Name_Stuff;

end loop;

end;
Criado 8 de novembro de 2016
Ultima resposta 9 de nov. de 2016
Respostas 1
Participantes 1