Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/05/2011, 13:02
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Consulta de ultimos registros con suma

Hola niko7700:

Creo que esta consulta te serviría, hice algunas pruebas cambiando los valores de la tabla y parece que funciona.

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tb1 (id int, codprod varchar(10), cantv int);
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> INSERT INTO tb1 VALUES
  5.     -> (1, 'A1000', 2),
  6.     -> (2, 'B2000', 5),
  7.     -> (3, 'A1000', 4),
  8.     -> (4, 'E5000', 7),
  9.     -> (5, 'A1000', 5),
  10.     -> (6, 'B2000', 3);
  11. Query OK, 6 rows affected (0.05 sec)
  12. Records: 6  Duplicates: 0  Warnings: 0
  13.  
  14. mysql> SELECT * FROM TB1;
  15. +------+---------+-------+
  16. | id   | codprod | cantv |
  17. +------+---------+-------+
  18. |    1 | A1000   |     2 |
  19. |    2 | B2000   |     5 |
  20. |    3 | A1000   |     4 |
  21. |    4 | E5000   |     7 |
  22. |    5 | A1000   |     5 |
  23. |    6 | B2000   |     3 |
  24. +------+---------+-------+
  25. 6 rows in set (0.00 sec)
  26.  
  27. mysql> select id, codprod, cantv from
  28.     -> (
  29.     -> SELECT id, codprod, cantv,
  30.     -> (
  31.     -> select sum(cantv)
  32.     -> from tb1 T2 where T2.id >= T1.id and T2.codprod = T1.codprod
  33.     -> ) acumulado
  34.     -> FROM tb1 T1
  35.     -> WHERE T1.codprod = "A1000"
  36.     -> ) T3
  37.     -> WHERE acumulado-cantv < 7
  38.     -> ORDER BY id DESC;
  39. +------+---------+-------+
  40. | id   | codprod | cantv |
  41. +------+---------+-------+
  42. |    5 | A1000   |     5 |
  43. |    3 | A1000   |     4 |
  44. +------+---------+-------+
  45. 2 rows in set (0.00 sec)

Igual y existe alguna forma más óptima de obtener el mismo resultado, o tal como lo recomienda Nano_, hacerlo por programación. Es cuestión de que hagas pruebas para ver si te sirve.

Saludos
Leo.