Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Sentencia UPDATE con dos tablas en Oracle 11gr2

Estas en el tema de Sentencia UPDATE con dos tablas en Oracle 11gr2 en el foro de Oracle en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/07/2011, 13:40
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Sentencia UPDATE con dos tablas en Oracle 11gr2

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
Código BASH:
Ver original
  1. 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
Código SQL:
Ver original
  1. 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

Última edición por gnzsoloyo; 16/12/2015 a las 18:28
  #2 (permalink)  
Antiguo 21/07/2011, 15:32
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 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
  #3 (permalink)  
Antiguo 21/07/2011, 16:44
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Sentencia UPDATE con dos tablas en Oracle 11gr2

Gracias jc3000, funcionó a la perfección la sentencia.

Etiquetas: oracle11g, sql-sentencia, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:13.