Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2008, 11:34
Avatar de acervantes
acervantes
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
UPDATE de una tabla desde una subconsulta

tengo lo siguiente:
- tabla A con los campos a1, a2, a3, a4 y a5
- subconsulta B (que a su vez está formada por otra subconsulta) con los campos b1, b2, b3, b4, b5

y necesito lo siguiente:
* actualizar a4 con b4 y a5 con b5; la condición de join es a1=b1 and a2=b2 and a3=b3


he probado con merge pero me da error ORA-00905: falta una palabra clave si es que no adiciono el insert y values (pero lo que yo quiero es sólo hacer UPDATE. no tengo mucha experiencia en sql, en todo caso como haría consulta con un UPDATE normal?

Cita:
MERGE INTO A
USING (SELECT b1, b2, b3, b4, b5 FROM es_subconsulta_probada) B
ON(a.A1 = b.b1 and a.a2 = b.b2 and a.a3 = b.b3)
WHEN MATCHED THEN
UPDATE SET a.a4 = b.b4,
a.a5 = b.b5
NOTA: es_subconsulta_probada es una subconsulta que me devuelve los valores deseados; esta es la complejidad.
es_subconsulta_probada podría contener algo como esto (lo que debe de importar es que devuelve los campos que necesitamos):
SELECT b1, b2, b3, b4, b5
FROM XXX,
(
SELECT
S.b1, S.b2, S.b3, S.b4, S.b5
FROM OTRATABLA S, tabl666 t
WHERE t.tabl='L026'
and s.yyy = t.yyy
GROUPBY S.xxx, S.yyy
) BBB
WHERE XXX.abc = S.abc


__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]

Última edición por acervantes; 16/06/2008 a las 13:15