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.