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

Poner columna con saldo en kardex

Estas en el tema de Poner columna con saldo en kardex en el foro de Mysql en Foros del Web. Buenas quisiera realizar un kardex simple y tengo las siguientes tablas articulos(id_articulo,articulo) entradas(id_entrada,fecha_factura) entrada_detalle(id,id_entrada,id_articulo,cantidad ) salidas(id_salida,fecha_salida) salidas_detalle(id,id_salida,id_articulo,cantidad) ejecuto esta sentencia @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver ...
  #1 (permalink)  
Antiguo 09/05/2016, 12:26
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 13 años, 10 meses
Puntos: 0
Poner columna con saldo en kardex

Buenas quisiera realizar un kardex simple y tengo las siguientes tablas

articulos(id_articulo,articulo)
entradas(id_entrada,fecha_factura)
entrada_detalle(id,id_entrada,id_articulo,cantidad )
salidas(id_salida,fecha_salida)
salidas_detalle(id,id_salida,id_articulo,cantidad)

ejecuto esta sentencia
Código SQL:
Ver original
  1. (SELECT DATE_FORMAT(e.fecha_factura, '%Y-%m-%d')AS fecha,'entrada' AS tipo, ed.cantidad AS entrada,NULL salida, '' saldo
  2. FROM entradas_detalle ed
  3. INNER JOIN articulos a ON a.id_articulo = ed.id_articulo
  4. INNER JOIN entradas e ON e.id_entrada = ed.id_entrada
  5. WHERE a.id_articulo = 'PRODUCTO_1' AND e.estado='OK')
  6. UNION ALL
  7. (SELECT DATE_FORMAT(s.fecha_salida,'%Y-%m-%d'),'salida' AS tipo, NULL entrada,sd.cantidad AS salida, '' saldo
  8. FROM salidas_detalle sd
  9. INNER JOIN articulos a ON a.id_articulo = sd.id_articulo
  10. INNER JOIN salidas s ON s.id_salida = sd.id_salida
  11. WHERE a.id_articulo = 'PRODUCTO_1' AND s.estado='OK')
  12. ORDER BY fecha DESC,tipo DESC;
[/CODE]

ME DA COMO RESULTADO LO SIGUIENTE


PERO NO SE COMO CALCULAR EL SALDO QUE DEBERÍA SER DE LA SIGUIENTE FORMA


se comenzó con 5 el 09/06/2015 después se hizo una salida de 5 quedarían 0 después hubo una entrada de 20 quedarían 20, después otra entrada de 2 quedarían 22 y así sucesivamente .

Espero puedan ayudarme.

Última edición por gnzsoloyo; 09/05/2016 a las 13:36
  #2 (permalink)  
Antiguo 09/05/2016, 13:38
Avatar de 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, 4 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
  #3 (permalink)  
Antiguo 10/05/2016, 12:17
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Poner columna con saldo en kardex

pero con el uso de esas variables se podría?
  #4 (permalink)  
Antiguo 12/05/2016, 04:25
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Poner columna con saldo en kardex

Cita:
Iniciado por chrcito Ver Mensaje
pero con el uso de esas variables se podría?
¿Al menos intentaste ejecutar lo que te propongo?

Empieza por eso. Quiero suponer que resulta evidente que si te propongo algo es para que lo pruebes...



Yo no puedo hacer la prueba porque no tengo ni tus tablas ni tus datos, asi que a menos que nos vayas a pasar un backup completo de TU base, tendrás que hacer la prueba TU mismo.
__________________
¿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: Ninguno
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 08:14.