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

Mostrar stock de articulos

Estas en el tema de Mostrar stock de articulos en el foro de Mysql en Foros del Web. Buenas. Antes de la consulta, paso a explicar las tablas que tengo asociadas en mi base de datos. BODEGAS id_bodega descripcion ARTICULOS id_articulo descripcion varios ...
  #1 (permalink)  
Antiguo 31/07/2012, 15:49
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Pregunta Mostrar stock de articulos

Buenas. Antes de la consulta, paso a explicar las tablas que tengo asociadas en mi base de datos.

BODEGAS
id_bodega
descripcion

ARTICULOS
id_articulo
descripcion
varios campos mas del articulo.

STOCK
id_articulo
id_bodega
cantidad_entrada
cantidad_salida

Para obtener el stock de cada uno de los articulos, segun una sola bodega, obtengo siempre la sumatoria entre la cantidad_entrada versus la cantidad_salida. Pero ahora me piden si esa misma informacion la puedo mostrar como un informe, en el sentido de que muestre en la parte de las columnas, el nombre de cada una de las bodegas, y en las filas, el nombre de cada uno de los articulos, y luego en los valores que se rellenan, especificar el stocka para ese articulo en esa bodega; me explico con un ejemplo mejor:

Ejemp.

bodega NORTE | bodega CENTRO | bodega SUR
lapices 0 10 26
plumones 8 21 0
corrector 5 7 10
goma de borrar 0 0 15

Eso significa que, de acuerdo a los articulos que tengo en la primera columna ordenados en filas, en la bodega NORTE, de cada uno de los articulos tengo esas cantidaddes en stock, y asi sucesivamente por cada una de las bodegas.

Esto se podra realizar solo en una consulta? La unica forma que he encontrado factible realizar, es unir un script php para que me arme la consulta, y asi poder obtener la consulta final el cual me arma cada uno de los campos que requiero. Se puede hacer en mysql ?

Me gustaria tambien saber si ustedes me pueden ayudar en como puedo encontrar una pagina que he estado buscando hace tiempo, el cual habla de como realizar consultas complejas, ustedes serian tan amables de ayudarme a encobtrar esa pagina, contiene ejemplos de cada una de las formas de realizar una consulta en mysql, y de como obtener otro tipo de ifnormacion, a partir de los datos ya ingresados en la base datos. Solo requiero queme envien los enlaces del buscador, de como realizaron la busqueda, y yo solo buscare la pagina en cuestion. Saludos.
  #2 (permalink)  
Antiguo 01/08/2012, 04:26
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Mostrar stock de articulos

Se puede hacer en una sola consulta....

Código SQL:
Ver original
  1. CREATE TABLE fdw_example3_bodega (
  2.   Id_Bodega INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   Descripcion VARCHAR(200) NOT NULL,  
  4.   PRIMARY KEY  (Id_Bodega)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
  6.  
  7. CREATE TABLE fdw_example3_articulo (
  8.   Id_Articulo INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  9.   Descripcion VARCHAR(200) NOT NULL,  
  10.   PRIMARY KEY  (Id_Articulo)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
  12.  
  13. CREATE TABLE fdw_example3_stock (
  14.   Id_Item INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  15.   Id_Articulo INT (10) NOT NULL,
  16.   Id_Bodega INT(10) NOT NULL,
  17.   Cantidad_Entrada INT(10) NOT NULL,
  18.   Cantidad_Salida INT(10) NOT NULL,  
  19.   PRIMARY KEY  (Id_Item)
  20. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
  21.  
  22. /* 1 BODEGA NORTE
  23.     2 BODEGA CENTRO
  24.     3 BODEGA SUR
  25. */ 
  26. INSERT INTO fdw_example3_bodega (Descripcion) VALUES ('Bodega Norte');
  27. INSERT INTO fdw_example3_bodega (Descripcion) VALUES ('Bodega Centro');
  28. INSERT INTO fdw_example3_bodega (Descripcion) VALUES ('Bodega Sur');
  29.  
  30. INSERT INTO fdw_example3_articulo (Descripcion) VALUES ('Lápices');
  31. INSERT INTO fdw_example3_articulo (Descripcion) VALUES ('Plumones');
  32. INSERT INTO fdw_example3_articulo (Descripcion) VALUES ('Corrector');
  33. INSERT INTO fdw_example3_articulo (Descripcion) VALUES ('Goma de borrar');
  34.  
  35. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (1, 2, 10, 0);
  36. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (1, 3, 39, 0);
  37. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (1, 3, 0, 13);
  38.  
  39. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (2, 1, 8, 0);
  40. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (2, 2, 21, 0);
  41.  
  42. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (3, 1, 5, 0);
  43. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (3, 2, 7, 0);
  44. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (3, 3, 10, 0);
  45.  
  46. INSERT INTO fdw_example3_stock (Id_Articulo, Id_Bodega, Cantidad_Entrada, Cantidad_Salida) VALUES (4, 3, 15, 0);
  47.  
  48. commit;
  49.  
  50. SELECT Id_Bodega, Id_Articulo,
  51.         SUM(Cantidad_Entrada) AS Cantidad_Entrada,
  52.         SUM(Cantidad_Salida) AS Cantidad_Salida,
  53.         SUM(Cantidad_Entrada - Cantidad_Salida) AS Existencia
  54. FROM fdw_example3_stock
  55. GROUP BY Id_Bodega, Id_Articulo ORDER BY 1, 2;
  56.  
  57.  
  58. SELECT a.Id_Articulo, a.Descripcion AS 'Artículo',
  59.       SUM(CASE x.Id_Bodega WHEN 1 THEN x.Existencia ELSE 0 END) AS Bodega_Norte,
  60.       SUM(CASE x.Id_Bodega WHEN 2 THEN x.Existencia ELSE 0 END) AS Bodega_Centro,
  61.       SUM(CASE x.Id_Bodega WHEN 3 THEN x.Existencia ELSE 0 END) AS Bodega_Sur
  62. FROM fdw_example3_articulo a
  63. LEFT OUTER JOIN (
  64. SELECT Id_Bodega, Id_Articulo,
  65.         SUM(Cantidad_Entrada) AS Cantidad_Entrada,
  66.         SUM(Cantidad_Salida) AS Cantidad_Salida,
  67.         SUM(Cantidad_Entrada - Cantidad_Salida) AS Existencia
  68. FROM fdw_example3_stock
  69. GROUP BY Id_Bodega, Id_Articulo
  70. ) AS x ON x.Id_Articulo = a.Id_Articulo
  71. GROUP BY a.Id_Articulo, a.Descripcion ;

Resultado:

Código SQL:
Ver original
  1. Id_Articulo Artículo        Bodega_Norte    Bodega_Centro   Bodega_Sur
  2. 1           Lápices         0               10              26
  3. 2           Plumones        8               21              0
  4. 3           Corrector       5               7               10
  5. 4           Goma de borrar  0               0               15
  #3 (permalink)  
Antiguo 02/08/2012, 08:47
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Mostrar stock de articulos

Hola, te queria agradecer por la respuesta entregada, me ha servido de mucho. Tambien te queria consultar como es que aprendiste a conceptualizar el manejo de las consultas, es algo que me cuesta a mi. No se como ocupar muy bien las consultas, se que hay unos diagramas que explican el uso de los JOIN, pero no los manejo muy bien.

Si tienes algun material grafico que me ayude a poder aprender como hacer este tipo de consultas. te lo agradeceria un monton.

Mil Gracias, tambien te he subido el karma, me gusto mucho tu respuesta.

Saludos.
  #4 (permalink)  
Antiguo 02/08/2012, 15:05
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Mostrar stock de articulos

No hay de que.

Nadie lo sabe todo y cuando la duda me surge a mí casi siempre encuentro quién me eche una mano en la red. Así que voy a tablas con la vida.

¿Cómo aprendí a conceptualizar el manejo de las consultas?... madre mía... Esa si que es una muy buena pregunta.

Una vez me toco dar un curso de SQL Server y para explicar los JOINs lo más sencillo que encontré para explicarlo de forma gráfica fueron las operaciones entre conjuntos: Unión, Intersección...

Ya hace algún tiempo puse un sitio web de manuales gratuitos, donde los manuales son de mi "teclado y letra". Dame un par de días y voy a ver que te coloco por ahí para ver si te aclaro un poco la cuestión.

Creo que voy a tener que ir a leer las políticas del foro para ver si puedo agregar el enlace a mi sitio de manuales -específicamente a ese manual que te ofrezco-, en el foro o si hay forma de publicar el manual en él. ¿O algún moderador me lo puede contar por acá...?
  #5 (permalink)  
Antiguo 02/08/2012, 22:15
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Mostrar stock de articulos

Estuviera genial que nos pasaras la liga a mi me interesa, Saludos!!!
  #6 (permalink)  
Antiguo 16/08/2012, 15:13
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Mostrar stock de articulos

Entre días liados y un par de semanas de vacaciones -que aún estoy terminando- no he podido publicar las notas acerca de los joins. En cuanto vuelva a tierra lo haré y les pondré por acá el enlace.

¡Saludos!
  #7 (permalink)  
Antiguo 16/08/2012, 21:16
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Mostrar stock de articulos

ok, muchas gracias, Saludos!!!

Etiquetas: articulos, php, sql, stock, tabla, tipo, campos
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 12:27.