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

[SOLUCIONADO] Sumar totales acumulativamente

Estas en el tema de Sumar totales acumulativamente en el foro de Mysql en Foros del Web. Buenas, tengo una consulta para hacerles, quiero saber como puedo mejorar un código que me esta dando problemas. Básicamente tengo una tabla que contiene montos ...
  #1 (permalink)  
Antiguo 16/07/2014, 12:20
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Sumar totales acumulativamente

Buenas, tengo una consulta para hacerles, quiero saber como puedo mejorar un código que me esta dando problemas.
Básicamente tengo una tabla que contiene montos positivos o negativos, son créditos o debitos de cuenta corriente de cliente. Los muestro en una tabla asi:

/ HABER / DEBE / TOTAL
100 0 100
150 0 250
0 -50 200
0 -100 100
Etc.

Donde TOTAL suma todos los campos del primero al ultimo y va arrojando por línea el total parcial y al final una vez sumado el total final, como una tabla contable.

Actualmente hago una consulta sql de los datos y luego sumo y resto con php en una variable el total ya que no se me ocurre otra forma de hacerlo todo con mysql para que sea mas rápido.

Anda todo bien, pero la consulta se puso muy lenta luego de tener que cargar 30.000 registros por ejemplo, y es culpa del php ya que la consulta vuela.

LA PREGUNTA: Hay alguna manera de calcular estos valores solo con mysql y arrojar un resultado línea por línea con el total, el cual tiene que irse calculando por linea?

Mi consulta actual es: “SELECT * FROM cuentas WHERE cliente = ‘112233’”, todo lo demás lo hago con php.

Muchas gracias!
  #2 (permalink)  
Antiguo 19/07/2014, 07:52
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Sumar totales acumulativamente

creo que tu problema es de estructura, lo logico hubiese sido almacenar tambien el total parcial, es una absurdo desde mi punto de vista tener que carcularlo nuevamente cada vez ya que lo unico que varia es el ultimo registro.

Yo añadiria un campo mas a la bd para almacenar el total parcial, cuando quiera insertar un nuevo registro recuperaria los datos de la ultima insercion y calcularia el nuevo total, de este modo a la hora de trabajar con los datos glovales evitas que php tenga que hacer 30.000 operaciones como es tu caso para optener el ultimo resultado.
  #3 (permalink)  
Antiguo 19/07/2014, 10:41
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Sumar totales acumulativamente

xerifandtomas gracias por la respuesta, si ya pense agregar esa columna, pero estaba estudiando si tenia alguna otra opcion ya que tendria que modificar muchas paginas para que trabaje con la columna nueva.

Pero bueno.. si no hay alternativa lo hago. Tengo que hacer en todo caso un script que recorra los registros anteriores y complete esa columna parcial.
  #4 (permalink)  
Antiguo 20/07/2014, 03:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sumar totales acumulativamente

Ese total NO debe guardarse en una bbdd relacional que se precie. Seria un campo calculado que potencialmente taeria mas problemas que beneficios.

Ese valor se debe obtener mediante la programacion externa que imprime el listado. (Off topic)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 21/07/2014, 11:20
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Sumar totales acumulativamente

Y es lo que yo pensaba por eso no guarde en su momento el resultado, pero se hace demasiado pesado, en mi caso con php, procesar todo.
  #6 (permalink)  
Antiguo 22/07/2014, 01:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sumar totales acumulativamente

Haces alguna operación de cierre anual que te permita trabajar solo con los apuntes del ejercicio actual?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 22/07/2014, 12:41
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Sumar totales acumulativamente

No hago ningún cierre anual ni mensual , esa tabla guarda los registros de movimientos de cuenta de los clientes, a modo de valores positivos o negativos con datos tales como id del comprobante, fecha, tipo (si es factura, cobranza, nc, nd, etc) para luego poder buscar los comprobantes correspondientes a ese cliente, listarlos, imprimirlos, y calcular el totalde cuenta actual.

En realidad con clientes normales no hay problema pero algunos clientes con muchos registros (como el consumidor final) llevan miles de registros mensuales, y es ahí donde se complica.

Me sugerís que genere alguna especie de cierre periódico?
  #8 (permalink)  
Antiguo 23/07/2014, 01:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sumar totales acumulativamente

Si, si antes has repasado los indices y consultas que usas, habiendo optimizado los indices y consultas sigue siendo lento, no tienes mas remedio que particionar las tablas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 24/07/2014, 12:21
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Sumar totales acumulativamente

En realidad la consulta en si demora decimas de segundo en la db, es muy rapida y esta todo indexado donde tiene que estar, la explosión de demora es en el navegador al mostrar los resultados.

Que opinas si hago una tabla con los resultados de los cierres mensuales mes a mes de cada cliente, entonces hago recuperar todos los meses anteriores de ahi que son pocos resultados y solo calculo los que quiero mostrar, tales como el mes actual de busqueda.

algo asi ??
  #10 (permalink)  
Antiguo 25/07/2014, 00:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sumar totales acumulativamente

No si la consulta demora milesimas de segundo el problema lo tienes en la programación externa, no intentes solucionarlo con mas tablas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 27/07/2014, 19:28
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Sumar totales acumulativamente

Ok, entonces no toco las tablas le busco una solucion de afuera.
Gracias!

Etiquetas: campo, php, registro, select, sql, tabla, totales
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 00:21.