Update de tabla obteniedo valores de otra tabla
Hola,
Tengo la versión 9.2.0.1. de Oracle. Para hacer un update de una tabla obteniendo los valores de otra tabla, lo hago:
UPDATE tabla_a a
SET a.c1 = (SELECT b.c3
FROM tabla_b b
WHERE a.c2 = b.c4)
WHERE EXISTS (SELECT NULL
FROM tabla_b b
WHERE a.c2 = b.c4)
Pero si quiero actualizar varios campos, tengo que hacer las mismas subconsultas, o con un cursor.
Hay alguna otra forma de hacerlo??
Saludos y gracias
Tengo la versión 9.2.0.1. de Oracle. Para hacer un update de una tabla obteniendo los valores de otra tabla, lo hago:
UPDATE tabla_a a
SET a.c1 = (SELECT b.c3
FROM tabla_b b
WHERE a.c2 = b.c4)
WHERE EXISTS (SELECT NULL
FROM tabla_b b
WHERE a.c2 = b.c4)
Pero si quiero actualizar varios campos, tengo que hacer las mismas subconsultas, o con un cursor.
Hay alguna otra forma de hacerlo??
Saludos y gracias
Tendrias que hacer algo mas o menos asÃ
update tabla a ser (dato1,dato2,dato3) =
(
select dat1,dat2,dat3
from tabla2 b
where b.dat1 = a.dato1....
)
/
update tabla a ser (dato1,dato2,dato3) =
(
select dat1,dat2,dat3
from tabla2 b
where b.dat1 = a.dato1....
)
/
Puedes hacer un update de un join, serÃa más o menos asÃ:
update
(
select a.c1, b.c3, a.c3, b.c7
from tabla_a a, tabla_b b
where tabla_a.c2 = tabla_b.c4
)
set a.c1 = b.c3, a.c3 = b.c7
where loquesea
update
(
select a.c1, b.c3, a.c3, b.c7
from tabla_a a, tabla_b b
where tabla_a.c2 = tabla_b.c4
)
set a.c1 = b.c3, a.c3 = b.c7
where loquesea
