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

Sumar N registros

Estas en el tema de Sumar N registros en el foro de Mysql en Foros del Web. Buenas tardes a todos, me he pasado horas tratando de encontrar una solución para esto. Debe ser sencillo, pero no me sale. Necesito sumar los ...
  #1 (permalink)  
Antiguo 20/11/2011, 16:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 1
Sumar N registros

Buenas tardes a todos, me he pasado horas tratando de encontrar una solución para esto.
Debe ser sencillo, pero no me sale.

Necesito sumar los importes de los ultimos N movimientos a partir de una fecha de todos los productos.

tengo dos tablas
producto (id int, nombre varchar())
movimiento (id int, idproducto int, importe double(), fecha date())

Lo que eh tratado es esto

select p.id
, (select sum(importe) from movimiento m where p.id = m.idproducto and m.fecha<curdate() limit 3)
from producto p

Esto esta mal, porque el sum me suma todos los movimientos de cada producto.
Trate tb con

select p.id , sum(importe)
from producto p
left join movimiento m on p.id = m.idproducto
where m.fecha < curdate()

Obvio q si le agrego el limit 3, solo me traeria los 3 del primero y no es la funcionalidad.

Pero si el producto no tiene movimientos no me trae nada (necesito tener el importe en null)

Tambien probe usar HAVING count(*) < 4 ,pero jamas me devuelve nada.

Agradezco sugerencias.
Marcos
  #2 (permalink)  
Antiguo 21/11/2011, 05:49
 
Fecha de Ingreso: noviembre-2011
Mensajes: 32
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Sumar N registros

La idea es uan subconsulta que te devuelva el top 3, ordenados por fechas asc o desc. Luego realiza un producto natura. Te dejo la idea para que pienses un poco :D

select sum(cantidad_a_sumar)
from tabla
where id in (
select top3 id
from tabla )

Última edición por b0rr3g0; 21/11/2011 a las 05:51 Razón: falta explicación
  #3 (permalink)  
Antiguo 21/11/2011, 06:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sumar N registros

Interesante reto SQL

Código MySQL:
Ver original
  1. SELECT productos.id,
  2.    productos.nombre,
  3.        (SELECT Sum(sbc.importe) AS SImporte
  4.            FROM (SELECT movimiento.importe,
  5.                             movimiento.id
  6.                          FROM movimiento
  7.                          WHERE movimiento.idproducto=productos.id
  8.                            AND movimiento.fecha<curdate()
  9.                          ORDER BY movimiento.id DESC LIMIT 3) as sbc) AS Total
  10. FROM productos;

Si la idea es esa que te sugieren.... te la he desarrollado... pero no estoy seguro de que funcione no tengo MySql aquí para verlo...

Lo que he hecho es parametrizar (linea 7) la subconsulta con el valor del id del producto de la consulta principal....

Si no funciona así podrias cambiar ese parametro por una variable externa que te pase el valor del id.... y montar un bucle externo (programación externa) que lance la consulta para cada producto...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, registros, select, tabla
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 04:54.