Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2015, 04:49
mkgranada
 
Fecha de Ingreso: septiembre-2015
Mensajes: 7
Antigüedad: 8 años, 7 meses
Puntos: 0
como genero esta consulta en MySQL para una tabla de movimienos de almacen

Hola a todos!
Aprovecho este primer post para presentarme y hacer una consulta. En primer lugar decir que no me dedico profesionalmente a la programacion pero si suelo desarrollar pequeñas aplicaciones para uso interno. Hasta ahora solia programar en visual Basic y utilizaba access como base de datos, pero a partir de este año he empezado con visual studio y MySql de un modo muy amateur.

Ahora estoy desarrollando una pequeña aplicacion que gestiona los movimientos de almacen y me surge la siguiente duda:

Quiero tener en una tabla el codigo de articulo, la suma de las cantidades en entrada y la suma de las cantidades en salida de ese articulo y otra columna con la diferencia entre ambas para obtener el stock.

La SQL que hago es la siguiente:
Código SQL:
Ver original
  1. SELECT codigo_articulo,SUM(cantidad) AS SALIDAS FROM mov_almacen
  2. WHERE fecha_mov>"2015-08-31"
  3. AND codigo_mov IN
  4. (SELECT codigo FROM mot_movimientos WHERE tipo_mov='S' AND estado='0')
  5. GROUP BY codigo_articulo

Con esta SQL obtengo todas la suma de las unidades que han salido de cada articulo pero no se como hacer para que me aparezcan las entradas y la diferencia entre ambas.

Para ello cuento con estas dos tablas:

La tabla de movimientos de almacen:
Código MySQL:
Ver original
  1. CREATE TABLE mov_almacen (
  2. id_mov_almacen      INTEGER     NOT NULL    DEFAULT '0'/*AUTO_INCREMENT*/,
  3. fecha_mov       DATE        NOT NULL    DEFAULT '0000-00-00',
  4. codigo_cliente      VARCHAR(10) NOT NULL    DEFAULT '',
  5. codigo_articulo     VARCHAR(15) NOT NULL    DEFAULT '',
  6. codigo_mov      VARCHAR(2)  NOT NULL    DEFAULT '',
  7. cantidad        INTEGER     NOT NULL    DEFAULT '0',
  8. codigo_almacen      VARCHAR(2)  NOT NULL    DEFAULT '',
  9. codigo_almacen_D    VARCHAR(2)  NOT NULL    DEFAULT '',
  10. comentario      VARCHAR(70) NOT NULL    DEFAULT '',
  11. estado          VARCHAR(1)  NOT NULL    DEFAULT '0',
  12. fecha_cierre        DATE        NOT NULL    DEFAULT '0000-00-00',
  13. mov_de_cierre       INTEGER     NOT NULL    DEFAULT 0,
  14. mov_que_cierra      INTEGER     NOT NULL    DEFAULT 0,
  15. /*
  16. mov_anterior        INTEGER     NOT NULL    DEFAULT '0',
  17. */
  18. precio_mov      DECIMAL(15,2)   NOT NULL    DEFAULT '0.00',
  19. PRIMARY KEY (id_mov_almacen),
  20. FOREIGN KEY (codigo_cliente) REFERENCES clientes (codigo) ON UPDATE CASCADE,
  21. FOREIGN KEY (codigo_articulo) REFERENCES articulos (codigo) ON UPDATE CASCADE,
  22. FOREIGN KEY (codigo_mov) REFERENCES mot_movimientos (codigo) ON UPDATE CASCADE,
  23. FOREIGN KEY (codigo_almacen) REFERENCES almacenes (codigo) ON UPDATE CASCADE,
  24. FOREIGN KEY (codigo_almacen_D) REFERENCES almacenes (codigo) ON UPDATE CASCADE
  25. )

Y la tabla de motivos de movimientos;
Código MySQL:
Ver original
  1. CREATE TABLE mot_movimientos (
  2. codigo      VARCHAR(2)  NOT NULL, #'Código del movimiento clave primaria
  3. tipo_mov    VARCHAR(1)  NOT NULL, #'Tipo de movimiento puede ser E(Entrada);S(Salida)
  4. descripcion VARCHAR(30) NOT NULL, #'Descripción del tipo de movimiento
  5. n_disp      VARCHAR(1)  NOT NULL, #'Como incide el movimiento en el stock no disponible (-,+,=)
  6. a_dev       VARCHAR(1)  NOT NULL, #'Como incide el movimiento en el stock a devolver (-,+,=)
  7. estado      VARCHAR(1)  NOT NULL, #'Estado del movimiento (0=Cerrado,1=abierto,2=cierra uno abierto)
  8. PRIMARY KEY (codigo)
  9. )

Última edición por gnzsoloyo; 25/09/2015 a las 05:25 Razón: Código sin etiquetar