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

Ayuda Update varias fila con Subconsulta

Estas en el tema de Ayuda Update varias fila con Subconsulta en el foro de Oracle en Foros del Web. Hola amigos del foro, espero me puedan ayudar, les cuento lo que estoy tratando de hacer pero no he podido, tengo estas 2 tablas con ...
  #1 (permalink)  
Antiguo 19/12/2008, 08:52
 
Fecha de Ingreso: enero-2005
Mensajes: 103
Antigüedad: 19 años, 9 meses
Puntos: 0
Ayuda Update varias fila con Subconsulta

Hola amigos del foro, espero me puedan ayudar, les cuento lo que estoy tratando de hacer pero no he podido, tengo estas 2 tablas con los iguientes campos:

TABLA VENTAS
NUM_VTA - FECHA - ESTADO
1 - 19/12/2008 - PD
2 - NULL - NULL
3 - 18/12/2008 - PD
4 - NULL - NULL

TABLA VENTAS_2
NUM_VTA - FECHA
1 - NULL
2 - 18/12/2008
4 - 19/12/2008

Lo que quiero realizar es actualizar los campos FECHA y ESTADO de la TABLA VENTAS cuando el NUM_VTA sea igual en Ambas Tablas y la FECHA de la TABLA VENTAS_2 sea NO NULA en caso de ser asi, se debe copiar la FECHA de la TABLA VENTAS_2 a la TABLA VENTAS y el campo ESTADO se debe dejar por defecto en "PD"

Espero no haber sido muy enredado y me puedan ayudar...
Desde ya muchas gracias
Saludos
  #2 (permalink)  
Antiguo 19/12/2008, 17:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Ayuda Update varias fila con Subconsulta

Tienes que hacer un update sobre una join de las dos tablas.
En Oracle cuesta porque la sentencia no es demasiado intuitiva, pero puedes consultar cómo hacerlo en http://www.dataprix.com/es/update-join-oracle
  #3 (permalink)  
Antiguo 22/12/2008, 03:13
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ayuda Update varias fila con Subconsulta

Hola rfgb1976,

la update sería algo así (no lo he probado), a ver si te vale:

Código:
UPDATE VENTAS V1 SET V1.ESTADO = 'PD', V1.FECHA =
(SELECT V2.FECHA FROM VENTAS_2 V2 WHERE V1.NUM_VTA = V2.NUM_VTA AND V2.FECHA IS NOT NULL)
WHERE EXISTS (SELECT 1 FROM VENTAS_2 V3 WHERE V1.NUM_VTA = V3.NUM_VTA AND V3.FECHA IS NOT NULL);
Un saludo.
  #4 (permalink)  
Antiguo 22/12/2008, 09:54
 
Fecha de Ingreso: enero-2005
Mensajes: 103
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Ayuda Update varias fila con Subconsulta

Excelente MutenRO, era justamente lo que necesitaba y funciona a la perfeccion

Muchas Gracias...!!!!!!!!!!!!!!!!!!!!
  #5 (permalink)  
Antiguo 02/01/2009, 11:54
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años
Puntos: 3
Respuesta: Ayuda Update varias fila con Subconsulta

Y que pasa cuando en la tabla ventas dos, el campo estado es distinto de null???
El update que formularon no funciona.

Para estas situaciones existe la sentence merge.

merge into ventas v1
USING (select v.num_vta,
v2.fecha,
nvl(v2.estado, 'PD') estado
FROM ventas v,
ventas_2 v2
WHERE v.num_vta = v2.num_vta
and v2.fecha is not null
and v.fecha is null
--and "si quieres filtrar por fecha, por estado o por otro campo lo puedes hacer aqui"
) aux
ON (v1.num_vta = aux.num_vta)
WHEN MATCHED THEN UPDATE SET v1.fecha = aux.fecha,
v1.estado = aux.estado
--WHEN NOT MATCHED THEN INSERT (v1.num_vta, v1.fecha, v1.estado) values (aux.num_vta, aux.fecha, aux.estado);

puedes descomentar la condicion para insert en el caso de que la venta no se encuentra en la tabla ventas, entonces que la inserte.

De esta manera, te evitas las subconsultas y tienes mayor control sobre las condiciones del update.


Saludos, Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.
  #6 (permalink)  
Antiguo 03/01/2009, 10:19
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ayuda Update varias fila con Subconsulta

Hola MarioHeredia,

¿quién ha dicho que en la tabla TABLA VENTAS_2 exista un campo que se llama ESTADO?

Un saludo.
  #7 (permalink)  
Antiguo 05/01/2009, 06:37
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años
Puntos: 3
Respuesta: Ayuda Update varias fila con Subconsulta

Tienes razon, acepto la critica.

Saludos, Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.
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 12:47.