Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/07/2011, 15:32
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Sentencia UPDATE con dos tablas en Oracle 11gr2

Cita:
Iniciado por Pepillo_r Ver Mensaje
Hola colegas, soy nuevo en el foro y en las bases de datos y requiero de su ayuda, espero me puedan echar la mano.
Platico el problema:
En oracle tengo dos tablas con tres campos en comun y cuando hago una selección con la sentencia

Código SQL:
Ver original
  1. SELECT tab1.c1, tab1.c2, tab1.c3
  2. FROM tab1, tab2
  3. WHERE tab1.c1 = tab2.c1
  4.     AND tab1.c2 = tab2.c2
  5.     AND tab1.c3 = tab2.c3;
esto me devuelve los registros que requiero; ahora, lo que quiero hacer es actualizar la tabla tab1 en la columna c4, de tal forma que en c4 me ponga la letra "A" en los registros seleccionados.
Mi idea de la sentencia con update es que sería muy similar a la sentencia select puesta al principio, por lo q la estructuré de la siguiente manera:

Código SQL:
Ver original
  1. UPDATE tab1
  2. SET c4 = 'A'
  3. WHERE tab1.c1 = tab2.c1
  4.     AND tab1.c2 = tab2.c2
  5.     AND tab1.c3 = tab2.c3;

al hacer esto, me manda el error
ORA-00904: "tab2"."c3": identificador no válido

Despues traté de ingresarle un from de la siguiente manera:

Código SQL:
Ver original
  1. UPDATE tab1
  2. SET c4 = 'A'
  3. FROM tab1, tab2
  4. WHERE tab1.c1 = tab2.c1
  5.     AND tab1.c2 = tab2.c2
  6.     AND tab1.c3 = tab2.c3;

Pero me manda el error
ORA-00933: comando SQL no terminado correctamente

En fin, como les comento, apenas empiezo en esta area y hasta el momento no he logrado dar con la solución de este problema, espero q me puedan ayudar.
Saludos
Prueba esto a ver si cuela
Código SQL:
Ver original
  1. UPDATE tab1 z
  2. SET z.c4 = 'A'
  3. WHERE EXISTS ( SELECT '1'
  4. FROM tab2 y
  5. WHERE z.c1 = y.c1
  6.     AND z.c2 = y.c2
  7.     AND z.c3 = y.c3 );

Última edición por gnzsoloyo; 16/12/2015 a las 18:29