Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho duas tabelas: A(campo CIDADE - sao paulo, SAO PAULO, São paulo) e B(campos CIDADES - sao paulo, SAO PAULO, São paulo e o campo CIDADE_TRATADA - São Paulo). A tabela A precisa ser corrigida baseada na tabela B, já que esta prevê os possíveis erros de digitação o os corrigi conforme o campo CIDADE_TRATADA. Qual instrução SQL poderia ser executada no ORACLE?
>
Oracle não fa update cruzado, eu uso um bloco plsql para isto
[Exemplo](http://forum.imasters.com.br/topic/509414-select-em-3-tabelas-e-update-em-1-delas/#entry2015687)
Neste caso o select teria o join das duas tabelas ?
Há uma chave comum ?
O campo CIDADE é comum as duas tabelas, ou seja as cidades que estão erradas na tabela A estão previstas na tabela B e na tabela B o campo CIDADE_TRATADA é a forma correta que deve ser inserida no campo CIDADE da tabela A.
+ou- isto
--cidades
select tabelab.cidade , tabelab.cidade_tratada
FROM TABELAA,TABELAB
where tabelab.cidade = tabelaa.cidade
--bloco
BEGIN
FOR R IN (SELECT TABELAB.CIDADE , TABELAB.CIDADE_TRATADA
FROM TABELAA,TABELAB
WHERE TABELAB.CIDADE = TABELAA.CIDADE))
LOOP
UPDATE TABELAA SET CIDADE = R.CIDADE_TRATADA
where cidade = r.cidade;
END LOOP;
end;Motta você é expert, era exatamente o que eu precisava. Muito obrigado e parabéns!
Há uma chave comum ?