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

Update a tabla con datos de otra tabla

Estas en el tema de Update a tabla con datos de otra tabla en el foro de Mysql en Foros del Web. Tengo una tabla 'saldos': id | nombre | cargos | abonos 123 acvfre NULL NULL 113 qwert NULL NULL 153 cvbnm NULL NULL 126 qasczc ...
  #1 (permalink)  
Antiguo 27/05/2008, 08:43
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
Update a tabla con datos de otra tabla

Tengo una tabla 'saldos':

id | nombre | cargos | abonos
123 acvfre NULL NULL
113 qwert NULL NULL
153 cvbnm NULL NULL
126 qasczc NULL NULL

Esta tabla la llene previamente con otra, haciendo un insert con un select. Todo salio bien. Solo me inserto el id y nombre, cargos y abonos se encuentran en otra tabla 'movimientos', de esta manera:

id | movimiento | importe
123 C 32.43
123 A 352.34
126 A 34.43
153 A 876.43

*C=Cargos; A=Abonos

Lo que quiero hacer, es, hacer un UPDATE a 'saldos', jalando los datos de 'movimientos', dentro del UPDATE se me ocurre, poner un SELECT a 'movimientos' donde me haga una suma de cada cargo y abono que tenga cada id.

Tengo mi query de la siguiente manera, pero me marca error cuando intento poner la funcion sum(), por lo que solo me pone la primer coincidencia del id:

Código:
update `saldos`,`movimientos` set `saldos`.cargos=if(`movimientos`.tipomov='C',`movimientos`.importe,0.00), `saldos`.abonos=if(`movimientos`.tipomov='A',`movimientos`.importe,0.00) where `saldos`.cuenta=`movimientos`.cuenta
Gracias.
  #2 (permalink)  
Antiguo 27/05/2008, 16:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Update a tabla con datos de otra tabla

Creo que esto lo hace:
UPDATE saldos AS sl INNER JOIN (Select movimientos.id, sum(if(movimientos.movimientos = 'C', movimientos.importe, 0.00)) as cargos, sum(if(movimientos.movimientos = 'A', movimientos.importe, 0.00)) as abonos from movimientos group by movimientos.id) as mv ON mv.id = sl.id SET sl.cargos= mv.cargos, sl.abonos = mv.abonos

mentiría si dijera que es mío: me serví como modelo de esto
http://www.experts-exchange.com/Micr..._22799408.html

Pruébalo y dinos.
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 18:58.