Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/05/2016, 13:38
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Poner columna con saldo en kardex

La query simple nunca te podrá de,volver ese tipo de resultados, porque son sumatorias sucesivas incrementales en cada registro. El SQL no puede hacer eso, y MySQL no lo implementa.
Para lograr eso se requiere usar variables de usuario de MySQL, pero implica un buen dominio de ellas.

Probemos esto:
Código MySQL:
Ver original
  1.     fecha,
  2.     tipo,
  3.     entrada,
  4.     salida,
  5.     ABS(@saldo:=(IFNULL(entrada, 0) - IFNULL(salida, 0))) saldo
  6.     ((SELECT
  7.         DATE_FORMAT(e.fecha_factura, '%Y-%m-%d') AS fecha,
  8.             'entrada' tipo,
  9.             ed.cantidad entrada,
  10.             NULL salida
  11.     FROM
  12.         entradas_detalle ed
  13.     INNER JOIN articulos a ON a.id_articulo = ed.id_articulo
  14.     INNER JOIN entradas e ON e.id_entrada = ed.id_entrada
  15.     WHERE
  16.         a.id_articulo = 'PRODUCTO_1'
  17.             AND e.estado = 'OK')
  18.    UNION ALL
  19.    (SELECT
  20.         DATE_FORMAT(s.fecha_salida, '%Y-%m-%d'),
  21.             'salida' tipo,
  22.             NULL entrada,
  23.             sd.cantidad salida
  24.     FROM
  25.         salidas_detalle sd
  26.     INNER JOIN articulos a ON a.id_articulo = sd.id_articulo
  27.     INNER JOIN salidas s ON s.id_salida = sd.id_salida
  28.     WHERE
  29.         a.id_articulo = 'PRODUCTO_1'
  30.             AND s.estado = 'OK')) t2
  31.         JOIN
  32.     (SELECT @saldo:=0.0) t1
  33. ORDER BY fecha DESC , tipo DESC;
La forma más simple es hacerlo en la aplicación, porque en la query solo podrías obtener la suma POR REGISTRO, y no acumulativa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/05/2016 a las 13:50