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

Update de un campo con condición en otra tabla

Estas en el tema de Update de un campo con condición en otra tabla en el foro de Oracle en Foros del Web. Hola, No sé bien cómo se haría lo siguiente: Tengo dos tablas. En la primera, tres campos son los que me interesan: idcliente (parte de ...
  #1 (permalink)  
Antiguo 28/01/2008, 11:57
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Update de un campo con condición en otra tabla

Hola,

No sé bien cómo se haría lo siguiente:

Tengo dos tablas.

En la primera, tres campos son los que me interesan:

idcliente (parte de la clave primaria)
idnave (parte de la clave primaria)
campo3 (el campo a actualizar)

En la segunda, dos campos me interesan:

idnave (clave primaria)
campo5 (quiero que cumpla determinada condición, como que sea igual a '1').

¿Cómo puedo actualizar con una única sentencia select el campo3 de la tabla primera (de la tabla 2 sólo tendría que buscar que cumpliera la condición de que campo5 fuese igual a '1', y luego ya unir esta id con la de la tabla1)?
  #2 (permalink)  
Antiguo 28/01/2008, 13:11
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Re: Update de un campo con condición en otra tabla

Hola,

Puedes utilizar un MERGE.

Código:
SQL> select * from t50;

 IDCLIENTE     IDNAVE     CAMPO3
---------- ---------- ----------
         1          1         10
         2          2         10
         3          3         10
         5          5         10
         6          6         10

SQL> select * from t51;

    IDNAVE     CAMPO5
---------- ----------
         1          1
         2          1
         3          1
         4          1
         5          2

SQL> merge into t50 d
  2   using (select idnave, campo5 from t51 where campo5 = 1) s
  3   on (s.idnave = d.idnave)
  4   when matched then update set campo3 = campo5
  5  /

3 rows merged.

SQL> select * from t50;

 IDCLIENTE     IDNAVE     CAMPO3
---------- ---------- ----------
         1          1          1
         2          2          1
         3          3          1
         5          5         10
         6          6         10
Tambien puedes cambiar esta linea
Código:
when matched then update set campo3 = campo5
por
Código:
when matched then update set campo3 = ALGUN_VALOR
Saludos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:49.