Oracle - Consulta de Actualización

   
Vista:

Consulta de Actualización

Publicado por José Osvaldo (2 intervenciones) el 05/08/2013 23:36:42
Estimados,

Estoy trabajando en TOAD 11.6.0.43 especificamente en el modo consulta:

Tengo dos tablas

T1 : (796 Registros)
T2 : (10500 Registros).
Rut : es clave primaria.
En ambas tablas existen 796 registros iguales

update t2 a
set a.correo = (selec b.email from t1 b
where a.rut = b.rut)

Al ejecutar la siguiente consulta me indica que actualizaron 10500 registros, siendo que son sólo 796, al revisar los registros los hace sin problema cuándo los rut son iguales, sin embargo, al chequear los distintos los deja nulos, aunque tenga algún tipo de información en dicho campo.

Por qué no actualiza sólo los campos iguale, en vez de recorrer todo la tabla T2, que puede estar faltando a dicha consulta ?? dato adicional en SQL Server se ejecutan sin problemas dicha in strucción.

Desde ya se agradece ayuda.

JOGC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta de Actualización

Publicado por Alixandro florian_do@yahoo.com (63 intervenciones) el 13/08/2013 21:25:50
Estimado J.O., es obvio que esa sentencia de update te vas a pasear la tabla T2 completa.

Numero 1 - el subquery solo busca los emails que machen con T1.
Numero 2 - no tiene un filtro que controle que registros de T2 quieres actualizar.

Posibles update, según los que quieras lograr

Eje-1:
update t2 a
set a.correo = (selec b.email from t1 b where a.rut = b.rut)
where a.correo is null;

Eje-2:
update t2 a
set a.correo = (selec b.email from t1 b where a.rut = b.rut)
where exists (selec 1 from t1 b where a.rut = b.rut)

Eje-3 “plsql cursor”:
Declare
Cursor upenail is
select b.rut, b.email
from t1 b
where (b.rut = :P_rut or :P_rut is null);
Begin
For r in upenail Loop
Update T2 a
set correo = r.email
where a.rut = r.rut;
End Loop;
--
commit;
End;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de Actualización

Publicado por José Osvaldo (2 intervenciones) el 13/08/2013 21:51:08
Muchas gracias Alixandro, ha quedado muy claro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar