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

actualizar una tabla segun datos de otra tabla

Estas en el tema de actualizar una tabla segun datos de otra tabla en el foro de Mysql en Foros del Web. hola tengo dos tablas una llamada : cambios_fechas con los campos (id, num_factura, id_concepto) y otra llamada: pedidos con los campos (id, num_factura, cambios_fecha, siguiente_dia) ...
  #1 (permalink)  
Antiguo 15/03/2009, 18:19
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
actualizar una tabla segun datos de otra tabla

hola

tengo dos tablas
una llamada :
cambios_fechas con los campos (id, num_factura, id_concepto)
y otra llamada:
pedidos con los campos (id, num_factura, cambios_fecha, siguiente_dia)

la idea que tengo es por medio de una consulta sql hacer un conteo de la primer tabla de cambios de fecha de cuantas facturas hay con id_concepto= 18 e ir asignandole en la otra tabla la cantidad en cambios_fechas.

ejemplo:
siguiente_dia = 19
cambio_fecha = 18

Cambios_fecha
num_factura -- id_concepto
123 -- 18
1234 -- 18
1234 -- 18
1235 -- 18
1234 -- 19
123 -- 18
12345 -- 19


Pedidos
num_factura -- cambios_fechas -- siguiente_dia
123 -- 2 -- 0
1234 -- 2 -- 1
1235 -- 1 -- 0
12345 -- 0 -- 1


la idea es actualizar una tabla segun los datos de otra tabla teniendo de clave el numero de factura num_factura.

alguien me podria colaborar con esto?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 15/03/2009, 20:30
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 segun datos de otra tabla

Hola lexus.

La verdad no te entendí muy bien. Sin embargo, puede que te ayude intentar
un update tabla2 set campo_tabla2=(select campo_tabla1 from tabla1 where campon_tabla1 = condicion);

En pocas palabras, si es posible actualizar datos en una tabla con base en la consulta de otra tabla.

Ojala te sirva de algo.
  #3 (permalink)  
Antiguo 15/03/2009, 20:51
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: actualizar una tabla segun datos de otra tabla

ok gracias..
lo que no se es como hacer para uqe me actualice campo a campo

donde el campo de tabla1 sea igual al campo de tabla2.
es decir donde coincidan num_factura en ambas tablas ese lo actualiza



algo asi como

update tabla2 cant_cambiosfecha = (select count(cambios_fecha) as cant_cambiosfecha from tabla1 where num_facturaEntabla1 = num_facturaEntabla2 and id_conceptoEntabla1 = 18)
esa seria la parte ke no se como hacer para ke coincidan los num_facturas de ambas tablas para que actualice los datos como son.



hice algo asi pero nada no me funciona

UPDATE pedidos SET cambios_fechas = (select count(cambios_fechas.num_factura) from cambios_fechas, pedidos
where cambios_fechas.num_factura = pedidos.num_factura and id_concepto = 18
)
;



UPDATE pedidos SET siguiente_dia = (select count(cambios_fechas.num_factura) from cambios_fechas, pedidos
where cambios_fechas.num_factura = pedidos.num_factura and id_concepto = 16
)
;
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 15/03/2009 a las 22:07
  #4 (permalink)  
Antiguo 15/03/2009, 22:22
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 segun datos de otra tabla

Ya te entendí.

Pero yo de ti, mejor me hago un procedimiento almacenado y no me mato la cabeza en una consulta tan compleja.

Un saludo.
  #5 (permalink)  
Antiguo 16/03/2009, 01:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: actualizar una tabla segun datos de otra tabla

Lexus,

tienes que hacer un update con inner join de dos tablas. Dinos


la sintaxis es
UPDATE tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo SET tabla1.campo = tabla2.campo WHERE tabla1.campo = 18

pon los nombres de tus campos y prueba. Si no pones el where, actualizará todos los relacionados.

UPDATE tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo SET tabla1.campo = tabla2.campo
  #6 (permalink)  
Antiguo 16/03/2009, 06:21
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: actualizar una tabla segun datos de otra tabla

Hola gracias por la respuesta..
tengo lo siguiente
pero lo ke puse en negrita es lo que no se..
necesito que el campo a actualizar en este caso "siguiente_dia"
seria el conteo de registros retornados de una consulta ejemplo
select count(*) from cambios_fechas where id_concepto = 18 and pedidos.num_factura = cambios_fechas.num_factura
pero no sabria como meterlo en lo qeu me pasasste lo hice asi pero no me funciono.


UPDATE pedidos INNER JOIN cambios_fechas ON pedidos.num_factura = cambios_fechas.num_factura
SET pedidos.siguiente_dia = count(cambios_fechas.*)
WHERE cambios_fechas.id_concepto = 18
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 16/03/2009 a las 08:01
  #7 (permalink)  
Antiguo 16/03/2009, 09:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: actualizar una tabla segun datos de otra tabla

Prueba así:
Código sql:
Ver original
  1. UPDATE pedidos INNER JOIN
  2.  (SELECT num_factura, COUNT(num_factura) total FROM `cambios_fecha`
  3.   WHERE cambios_fecha.id_concepto = 18 GROUP BY num_factura)t1
  4.  ON t1.num_factura = pedidos.num_factura
  5.  SET pedidos.cambios_fechas = t1.total

Si quieres que actualice todos
Código sql:
Ver original
  1. UPDATE pedidos INNER JOIN
  2.  (SELECT num_factura, COUNT(num_factura) total FROM `cambios_fecha` GROUP BY num_factura)t1
  3.  ON t1.num_factura = pedidos.num_factura
  4.  SET pedidos.cambios_fechas = t1.total
  #8 (permalink)  
Antiguo 16/03/2009, 09:35
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: actualizar una tabla segun datos de otra tabla

ok gracias aparentemente ya me funciono..
hare las respectivas verificaciones y te comento
muchas gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #9 (permalink)  
Antiguo 16/03/2009, 09:48
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: actualizar una tabla segun datos de otra tabla

por ahora lo tengo asi y parece estar funcionando. cualquier cosa te aviso muchas gracias.


--para cambios de fechas
UPDATE pedidos
INNER JOIN (SELECT num_factura, count(num_factura) total FROM `cambios_fechas` WHERE cambios_fechas.id_concepto = 18 GROUP BY num_factura)
t1 ON t1.num_factura = pedidos.num_factura
SET pedidos.cambios_fecha = t1.total;
--para siguiente dia
UPDATE pedidos
INNER JOIN (SELECT num_factura, count(num_factura) total FROM `cambios_fechas` WHERE cambios_fechas.id_concepto = 16 GROUP BY num_factura)
t1 ON t1.num_factura = pedidos.num_factura
SET pedidos.siguiente_dia= t1.total;
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #10 (permalink)  
Antiguo 16/03/2009, 11:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: actualizar una tabla segun datos de otra tabla

lexus,
no me fío de la segunda consulta, porque no sé qué es exactamente siguiente_dia, y por qué lo actualizas con el total de num_factura. No creo que sea lo que quieras, o yo lo he entendido mal. Explica lo que es ese siguiente_dia.
  #11 (permalink)  
Antiguo 16/03/2009, 13:28
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: actualizar una tabla segun datos de otra tabla

es ke siguiente_dia y cambios_fecha son dos campos qeu necesito actualizar con la cantidad de facturas segun el concepto ke tengan

en la tabla de cambios_Fechas hay un campo id_concepto donde
18 = cambios_fecha
16 = siguiente_dia

tonces hice dos consultkas para actualizar cada campo..
aparentemente me funciono pero ando en pruebas de verificacion.
gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
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 11:18.