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

Actualizar una tabla desde otra tabla

Estas en el tema de Actualizar una tabla desde otra tabla en el foro de PostgreSQL en Foros del Web. Hola, estuve buscado pero no he encontrado lo que quiero. Lo que necesito hacer es llevar algunos valores de una tabla a otra, pero, en ...
  #1 (permalink)  
Antiguo 11/05/2009, 09:47
Avatar de Beuses  
Fecha de Ingreso: marzo-2009
Ubicación: Maracaibo
Mensajes: 132
Antigüedad: 15 años, 1 mes
Puntos: 5
Actualizar una tabla desde otra tabla

Hola, estuve buscado pero no he encontrado lo que quiero.

Lo que necesito hacer es llevar algunos valores de una tabla a otra, pero, en la

tabla que quiero llenar, el id es tipo serial y por lo tanto se incrementa solo, pero

ese id no tiene nada que ver con el id de la otra tabla que quiero copiar.

Coloque este codigo pero no me funcionó

Código PHP:
UPDATE tbl_solicitud_procesada SET ci_empleado=s.ci_empleado

id_tipo=s.id_tipoid_estatus=s.id_estatusfecha_solicitud=s.fecha_solicitud

fecha_procesada=now(),observaciones=s.observaciones FROM tbl_solicitud as 

WHERE tbl_solicitud_procesada
.id is NULL and s.id_estatus=4
Alguno podria decirme como hacerlo si se puede por favor?

Gracias.
  #2 (permalink)  
Antiguo 11/05/2009, 10:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Actualizar una tabla desde otra tabla

Que acción hizo el código que ejecutaste? Por que no te funcionó?
Podrías poner la estructura de las dos tablas, con unos pocos registros y el resultado que esperarías?

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/05/2009, 10:26
Avatar de Beuses  
Fecha de Ingreso: marzo-2009
Ubicación: Maracaibo
Mensajes: 132
Antigüedad: 15 años, 1 mes
Puntos: 5
Pregunta Respuesta: Actualizar una tabla desde otra tabla

Yo he ingresado unos valores a mano en la tabla y lo he ejecutado ese codigo y

lo que sale es esto:

Código PHP:
Query OK0 rows affected (0,02 sec
Las tablas son algo como

tbl_solicitud_procesada
Código PHP:
id cedula id_tipo id_estatus fecha_solicitud fecha_procesada observaciones
12345678 1      4          15/04/2009   11/05/2009     Una prueba 
tbl_solicitud
Código PHP:
id cedula id_tipo id_estatus fecha_solicitud otrocampootrocampo observaciones
48 
12345678 1      4          15/04/2009    | --------   | -------- | Una prueba 
No se que esta mal porque sino no preguntara...

Y lo que quiero es llevar los valores correspondientes a la otra tabla.
  #4 (permalink)  
Antiguo 11/05/2009, 10:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Actualizar una tabla desde otra tabla

Beuses

No estas siendo muy explicito, pero asumiendo que el registro de tbl_solicitud se crea al momento de un usuario realizar una solicitud, también se genera un registro para tbl_solicitud_procesada?

Me da la impresión que en el where cuando dices que tbl_solicitud_procesada.id sea null, asumas que vaya a hacer una inserción a base de un update? Existe un registro en la tabla tbl_solicitud_procesada con valor null antes de realizar el update?

Si vas a hacer un update, requieres de un registro ya existente.

Cuéntanos mas detalladamente que es lo que piensas hacer.

Discúlpame si soy yo el que no te entiende.

un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 11/05/2009, 12:26
Avatar de Beuses  
Fecha de Ingreso: marzo-2009
Ubicación: Maracaibo
Mensajes: 132
Antigüedad: 15 años, 1 mes
Puntos: 5
Pregunta Respuesta: Actualizar una tabla desde otra tabla

Ok, disculpa, es que de verdad no lo explique mejor.
No, la tbl_solicitud_procesada se debe llenar luego que el id_estatus sea el de
procesado, antes de eso no se hace nada en esta tabla.


Y no, en la tbl_solicitud_procesada no hay ningun dato null, no se porque le puse

asi, lo que quisiera es que para el incremento del id en esa tabla, es decir, el id

con valor siguiente 2 en ese se guardaran los valores de la otra tabla.


Pero no hay valores en, todo en la tabla tbl_solicitud_procesada esta vacio, ni

siquiera esta incrementado el id de esa tabla.

Cuando en la tabla tbl_solicitud el estatus de la solicitud sea procesada es decir

con id=4 se debe llenar la tabla tbl_solicitud_procesada con los valores que le

estoy pasando y luego borrarse de la tabla tbl_solicitud.

Si hay otra forma de hacerlo...
Me gustaria saber que hacer...
  #6 (permalink)  
Antiguo 11/05/2009, 12:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Actualizar una tabla desde otra tabla

Beuses... yo te recomendaría lo siguiente:

Cada registro de tbl_solicitud debe ser procesada. Sin importar el tiempo que pase, si se hizo antes o después que otras solicitudes mas recientes, pero considero que también podrían compartir el mismo id.

Te recomendaría que hagas un trigger que se dispare en la actualización de la tabla tbl_solicitud (on update) y que el trigger verifique si el id_estatus es = a 4.
Si corresponde a 4, hagas una inserción en la tabla tbl_procesada con los datos de la tabla tbl_solicitud y posteriormente se borre este registro en la tabla tbl_solicitud.

Sin embargo, para que borrar los registros de tbl_solicitud?

Otra opción, sería insertar al mismo tiempo en la tbl_solicitud y en tbl_solicitud procesada.
De este modo, si trataras de hacer un update similar al que tratabas de hacer, actualizaría la información de tbl_solicitud_procesada ya que en este caso, si encontraría un registro para actualizar. Sin embargo, este proceso sería manual. Con triggers sería automatico.

Un saludo.
Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 12/05/2009, 08:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 24
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Actualizar una tabla desde otra tabla

De lo que planteas, el procedimiento correcto para actulizar una tabla en base a la informacio de otra, deberia hacerce en el momento en el que insertas algun dato en la tabla, esto se debe hacer con un trigger, y hay varias formas de lanzarlo, la mas apropiada es hacerlo despues de que la tupla a sido insertada ya que eso significaria que la tupla es valida y que tiene los datos que especifica el esquema de la tabla.

Supongo que esta es la cituacion porque de lo contrario solo estarias hablando de pasar los datos de una tabla a otra y ya. Si fuese esto simplemente debes hacer un backup de la base de datos y modificar los insert para que puedas pasar las tuplas a la tabla destino.

Esto es como para ofrecerte unas soluciones para que le des salida al problema, porque de todas maneras veo que hay inconsistencias entre las tablas ya que ese detalle que mencionas con el id es un problema, no deberia ser asi, deberia haber una relacion clara entre las tablas.
  #8 (permalink)  
Antiguo 12/05/2009, 09:28
Avatar de Beuses  
Fecha de Ingreso: marzo-2009
Ubicación: Maracaibo
Mensajes: 132
Antigüedad: 15 años, 1 mes
Puntos: 5
Pregunta Respuesta: Actualizar una tabla desde otra tabla

Hola a todos los que me respondieron...

He hecho esta función para poder hacer le que quiero:

Código PHP:
DECLARE
v_flag varchar;
BEGIN
IF(p_idestatus ='9'THEN
     UPDATE tbl_solicitud SET id_tipo 
p_idtipoid_estatus p_idestatusobservaciones p_observacion WHERE id p_id;
     
SELECT INTO v_flag FROM fn_insertar_procesada(p_cedulap_idtipop_idestatus,to_date(p_fecha_solicitud ,'DD/MM/YYYY'), p_observacion);
     
DELETE FROM tbl_solicitud WHERE id p_id;
     RETURN 
'Nueva solicitud procesada';
ELSE
    
BEGIN
    UPDATE tbl_solicitud
    SET id_tipo 
p_idtipoid_estatus p_idestatusobservaciones p_observacion
    WHERE id 
p_id;
    
EXCEPTION
    WHEN OTHERS THEN
          
RETURN 'Ha ocurrido un error al ejecutar la instrucción';
    
END;
    RETURN 
'OK';
END IF;
END
Y lo hizo perfecto!!

Ahora el problema es otro :S

Estoy usando ajax y genero un objeto XML con la consulta desde la base de

datos pero aunque en la función digo que borre la data, sigue alli mostrandose y

ya no esta en la base de datos...
  #9 (permalink)  
Antiguo 12/05/2009, 09:36
Avatar de Beuses  
Fecha de Ingreso: marzo-2009
Ubicación: Maracaibo
Mensajes: 132
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: Actualizar una tabla desde otra tabla

Hola!!!

Disculpen pero ya se cual era el problema; en vez de retornar 'Nueva solicitud procesada' debía

colocar es un 'OK'

De igual forma muchas gracias a todos por sus aportes, sino no se me habrian dado esta

idea


:)

Gracias!!!!
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 06:48.