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

Problema al sumar con SUM

Estas en el tema de Problema al sumar con SUM en el foro de Mysql en Foros del Web. Buenas tengo un pequeño problemilla, que no consigo dar con la solución. Me gustaria sumar varias filas que contienen un campo en comun numero de ...
  #1 (permalink)  
Antiguo 25/01/2010, 07:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Problema al sumar con SUM

Buenas tengo un pequeño problemilla, que no consigo dar con la solución. Me gustaria sumar varias filas que contienen un campo en comun numero de factura, y agruparlas por el numero de factura, lo que no quiero es que me sume varias veces la misma cantidad.

El codigo que tengo es este.

Código MySQL:
Ver original
  1. $sqlTotal="SELECT SUM(totalFactura) AS resultado FROM deporte.factura WHERE proceso='facturado' AND ano=".$_GET['ano']." AND mes='".$_GET['mes']."' GROUP BY numeroFactura";

Lo que me gustaria que hiciese es que sumase todas las facturas que cumplan las condiciones y me muestre el resultado aunque haya varias filas con el mismo numero de factura.

Pero lo que hace es sumar si por ejemplo una factura contiene tres filas con el mismo numero de factura no me lo agrupa y me la suma tres veces.

Ejemplo
numeroFactura 1 totalFactura 100
numeroFactura 1 total Factura 100
numeroFactura 2 totalFactura 200
numeroFactura 3 totalFactura 150
numeroFactura 3 totalFactura 150

Si quisiera que me mostrara la suma de la factura 1,2 y 3 deberia mostrarme 450 y me muestra 700.

No se si se entiende bien, pero si alguien me puede ayudar un poco.
  #2 (permalink)  
Antiguo 25/01/2010, 07:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al sumar con SUM

Si quieres que te sume varias facturas distintas, entonces lo que tienes que afinar es cuál es el criterio de agrupamiento: ¿Un usuario? ¿Una fecha? ¿Un asociado? ¿La caja que las cobró?
El tema no pasa entonces por los números de factura, sino que es lo que agrupas cuando buscas las facturas 1, 2 y 3 y la separas de la 4.

Aclaranos eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/01/2010, 07:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Lo que ocurre es que las facturas que deseo agrupar son identicas en todo excepto el concepto, por ejemplo cuando inserto una factura inserto varios conceptos que se insertan en una idFactura cada uno pero con un solo numero de factura, es decir un numero de factura puede tener hasta 3 filas teniendo en comun el totalFactura, cliente, etc. he probado agrupandolo con otros campos y me sigue dando el mismo error.
En el ejemplo que he puesto antes si solo buscara el resultado de la factura 1 y 2, me deberia mostrar 300 y no 400 como hace.

Seguiré indagando a ver si encuentro algo, pero acepto sugerencias...

gracias
  #4 (permalink)  
Antiguo 25/01/2010, 07:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Se me ocurre otra cosa pero no se como hacerlo, para mostrar el listado realizo un while, ¿podria ir sumando a un valor que seria el resultado todos los totales de cada factura?

pero no se como hacer....
  #5 (permalink)  
Antiguo 25/01/2010, 08:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al sumar con SUM

Me parece que lo que puedes tener en un modelo de tablas de facturación mal diseñado.
Como estandar, todo documento que contenga ítems y un encabezado (es decir, los datos repetitivos), se descompone en dos tablas:
Cita:
FACTURA(nroFactura, FechaFactura, idCliente, ...)
FACTURA_ITEM(nroFactura, itemFactura, idProducto, Cantidad, Descuento)
En este contexto, una consulta que te devuelve el importe de cada factura cruza las tablas de modo que se sumen los valores de los items corrrespondientes a cada factura en forma agrupada.
Este modelo que te pongo requiere una consulta un poco más compleja, y además dos tablas adicionales: CLIENTE y PRODUCTO, pero sería la idea más o menos estándar de cómo se hace.
Si estás poniendo en una sola tabla todas las cosas, tus tablas están desnormalizadas y tienen problemas de redundancia elevada (y riesgo de inconsistencias graves).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/01/2010, 08:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Solucionado, por si a alguien le pueder interesar, lo he solucionado con SUM(DISTINCT numeroFactura)

Asi queda el codigo

Código MySQL:
Ver original
  1. $sqlTotal="SELECT SUM(DISTINCT totalFactura) AS resultado  FROM deporte.factura WHERE proceso='facturado' AND ano=".$_GET['ano']." AND mes='".$_GET['mes']."'";

gracias y hasta otra..... PORQUE SEGURO QUE HABRÁ OTRA
  #7 (permalink)  
Antiguo 25/01/2010, 08:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Me parece que lo que puedes tener en un modelo de tablas de facturación mal diseñado.
Como estandar, todo documento que contenga ítems y un encabezado (es decir, los datos repetitivos), se descompone en dos tablas:

En este contexto, una consulta que te devuelve el importe de cada factura cruza las tablas de modo que se sumen los valores de los items corrrespondientes a cada factura en forma agrupada.
Este modelo que te pongo requiere una consulta un poco más compleja, y además dos tablas adicionales: CLIENTE y PRODUCTO, pero sería la idea más o menos estándar de cómo se hace.
Si estás poniendo en una sola tabla todas las cosas, tus tablas están desnormalizadas y tienen problemas de redundancia elevada (y riesgo de inconsistencias graves).
(solucionado)De momento parece que salgo del paso.. si que puede ser que tengas razon, es la primera pagina que hago tan compleja (al menos para mi) y si puede ser que tenga algo mas estructuradas las tablas... De todos modos si que lo mas o menos lo tengo cada cosa en un sitio distinto, clientes, productos, facturas, hasta los clientes que no son clientes habituales...
De todos modos gracias
Un saludo
  #8 (permalink)  
Antiguo 25/01/2010, 08:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Pues parece ser que no salgo del paso... me he dado cuenta de que la consulta tiene un problema y es cuando dos resultados de distintas facturas coincidan... (sera pocas veces pero podria ocurrir))...

total que estoy como al principio....
__________________
Hasta otra.... porque seguro que habrá otra....
  #9 (permalink)  
Antiguo 25/01/2010, 08:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al sumar con SUM

Problema de discriminante...
¿te resultaría muy difícil, en el punto en que estás, tratar de tomar el toro por las astas, y cambiar la estructura de la tabla, al menos lo suficiente como para hacerla funcionar para lo que necesitas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 25/01/2010, 09:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Si.. realmente cambiarlos seria mucho trabajo...
Lo que estoy haciendo o intentado es enfocarlo de otro modo, y es creando una variable y que me guarde todos los totales de las facturas que me muestra. En una pagina que me imprime los resultado de un mes me sale perfecto, pero en la que me muestra los resultado por trimestre me da mas del total...
Seguire buscando....

gracias de todos modos....
__________________
Hasta otra.... porque seguro que habrá otra....
  #11 (permalink)  
Antiguo 25/01/2010, 09:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema al sumar con SUM

Ya funciona todo correctamente.. en la pagina que te dije que funcionaba mal era porque no estaba mostrando los resultado totales sino la base imponible....

Gracias por todo de nuevo....
__________________
Hasta otra.... porque seguro que habrá otra....
  #12 (permalink)  
Antiguo 25/01/2010, 10:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al sumar con SUM

Trata de enfocarte a la normalización de esas tablas, por más que te lleve tiempo, porque eventualmente te traerá tanto problemas de consistencia como de performance en el sistema.
No es una fantasía. Ese tipo de cosas a la larga, cuando la base está en producción, son muy problemáticas y en ese momento ya no se pueden corregir.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sum
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 10:18.