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

Consulta en tablas con relaciones y suma acumulada de algunos indicadores

Estas en el tema de Consulta en tablas con relaciones y suma acumulada de algunos indicadores en el foro de Mysql en Foros del Web. Hola buenos días foreros Tiempo sin pasar por FDW y ahora vengo con una problemática que tiene que ver con relaciones de tablas y sumas ...
  #1 (permalink)  
Antiguo 05/02/2009, 09:36
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 18 años
Puntos: 3
Mensaje Consulta en tablas con relaciones y suma acumulada de algunos indicadores

Hola
buenos días foreros
Tiempo sin pasar por FDW y ahora vengo con una problemática que tiene que ver con relaciones de tablas y sumas de campos de forma acumulada por meses, como un sistema economico que tales indicadores se suman los meses anteriores con el mes actual para que de el acumulado de ese indicador

Vamos hiendo al asunto

resulta que tengo una BD con varias tablas que entre ellas algunas entan relacionadas
El tema de las relación de las tablas no tengo ningun problema pero a la hora de hacer una suma acumulada es hay en donde tengo el problema
select tabla.campo ........... form tabla inner join ........ where tabla.campo = tabla.campo ........
esto ok sin ningun tipo de problema

pero ahora a la hora de hacer un acumulado de algun indicador (campo) como logro llegar hacer eso, en la tabla va guardado el mes y año tambien de los datos insertados

si hacer un script en mysql algo como esto quedaría
SET @esto = 0;
SELECT (@esto:=campo + @esto) As Sumatoria,
`tabla`.*
FROM `tabla`;

pd: es como un sistema económico o de contabilidad que se va llevando el acumulado de los meses anteriores con el mes (plan y real)
espero haber sido algo claro en mi problemática de lo contrario preguntar para seguir dando mas detalles.
para este trabajo estoy usando nuke-evolution como cms

consulta con todo el churrero que le he hecho.

$result = $db->sql_query("SELECT ".$prefix."_economia_egastos_plan.elem_id, ".$prefix."_economia_egastos_real.elem_id, ..............................
FROM ".$prefix."_economia_panual INNER JOIN (".$prefix."_economia_egastos_real INNER JOIN (".$prefix."_economia_ccosto INNER JOIN (".$prefix."_economia_asignarmes INNER JOIN ".$prefix."_economia_egastos_plan

ON ".$prefix."_economia_egastos_plan.mes=".$prefix."_ economia_asignarmes.id)

ON ".$prefix."_economia_egastos_plan.ccosto_id=".$pre fix."_economia_ccosto.ccosto_id)
ON ".$prefix."_economia_egastos_plan.elem_id=".$prefi x."_economia_egastos_real.elem_id)
ON ".$prefix."_economia_egastos_plan.ccosto_id=".$pre fix."_economia_panual.ccosto_id WHERE (".$prefix."_economia_egastos_plan.ccosto_id='$cco sto_id' AND ".$prefix."_economia_egastos_plan.mes='$mes' AND ".$prefix."_economia_egastos_plan.anno='$anno' )
GROUP by ".$prefix."_economia_egastos_plan.mes", $db);
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #2 (permalink)  
Antiguo 05/02/2009, 10:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta en tablas con relaciones y suma acumulada de algunos indicadores

No sé si te habré entendido bien, pero si lo que quieres es un total acumulado, quizás la mejor solución la obtendrías con programación. No obstante, si te empeñas en hacerlo sólo con la base, un poco eficiente autojoin podría servirte:
Código sql:
Ver original
  1. SELECT t1.mes, t1.ano, t1.dato1, SUM( t2.campocantidad ) totalacumulado
  2. FROM tabla t1
  3. INNER JOIN tabla t2 ON ( (
  4. t1.mes >= t2.mes
  5. AND t1.ano >= t2.ano
  6. )
  7. OR (
  8. t1.mes <= t2.mes
  9. AND t1.ano > t2.ano
  10. ) )
  11. GROUP BY t1.mes
  12. ORDER BY t1.ano, t1.mes

Y si quisieras obtener sólo subtotales y totales, mejor con group by ... with rollup

Código sql:
Ver original
  1. SELECT mes, ano, SUM( camponumerico ) total
  2. FROM tabla
  3. GROUP BY ano, mes
  4. WITH rollup

Última edición por jurena; 05/02/2009 a las 11:11
  #3 (permalink)  
Antiguo 05/02/2009, 11:49
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 18 años
Puntos: 3
Respuesta: Consulta en tablas con relaciones y suma acumulada de algunos indicadores

Ok
vere con los ejemplos que posteaste

pero si por lo que dices que si entendiste o que no me supe explicar hago como ejemplo

mes acumulado
plan real plan real
autos 2 3 2 3
.....
......

proximo mes
mes acumulado
plan real plan real
autos 4 4 6 7
.....
......

proximo mes
mes acumulado
plan real plan real
autos 3 5 9 12
.....
......

mas o menos a modo de ejemplo con demas elementos
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #4 (permalink)  
Antiguo 10/02/2009, 09:52
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 18 años
Puntos: 3
Respuesta: Consulta en tablas con relaciones y suma acumulada de algunos indicadores

hola
buenos días
hoy volvi a retomar el tema y coloco esto
ya en esta parte
Cita:
FROM ".$prefix."_economia_panual INNER JOIN (".$prefix."_economia_egastos_real INNER JOIN (".$prefix."_economia_ccosto INNER JOIN (".$prefix."_economia_asignarmes INNER JOIN ".$prefix."_economia_egastos_plan

ON ".$prefix."_economia_egastos_plan.mes=".$prefix."_ economia_asignarmes.id)

ON ".$prefix."_economia_egastos_plan.ccosto_id=".$pre fix."_economia_ccosto.ccosto_id)
ON ".$prefix."_economia_egastos_plan.elem_id=".$prefi x."_economia_egastos_real.elem_id)
ON ".$prefix."_economia_egastos_plan.ccosto_id=".$pre fix."_economia_panual.ccosto_id
WHERE ".$prefix."_economia_egastos_plan.ccosto_id = '$ccosto_id'
AND ".$prefix."_economia_egastos_plan.mes <= '$mes'
AND ".$prefix."_economia_egastos_plan.anno = '$anno'
GROUP By ".$prefix."_economia_egastos_plan.anno
me va levando los acumulado por meses ok, pero con un solo problema
que en la parte del mes normal siempre se me mantiene el primer mes (enero) pero en los acumulados si me lo va calculando y acumulando por meses

ahora si aqui
Cita:
AND ".$prefix."_economia_egastos_plan.mes <= '$mes'
invierto
Cita:
AND ".$prefix."_economia_egastos_plan.mes >= '$mes'
me lo calcula y me coloca los meses tanto el mes como el acumulado, pero el acumulado de lo hace de forma regresiba, vaya que em lo calcula pero al reves como si diciembre fuera enero, noviembre febrero y asi sucesivamente.

pero ya mi problema es mostrar el mes porque ya me acumula.

un abrazo
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
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 17:29.