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

Query para stock

Estas en el tema de Query para stock en el foro de Bases de Datos General en Foros del Web. Un saludo para todos...alguien me podria ayuda con esto....tengo un query el cual suma los productos de una misma tabla, tanto para entradas como para ...
  #1 (permalink)  
Antiguo 30/09/2010, 15:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 49
Antigüedad: 16 años, 1 mes
Puntos: 0
Query para stock

Un saludo para todos...alguien me podria ayuda con esto....tengo un query el cual suma los productos de una misma tabla, tanto para entradas como para salidas..ejemplo:

Tabla Insumos (Entradas)

Trapeador 5

Escoba 10


osea si yo doy de alta una escoba o un trapeador con este query me lo incrementa en la misma tabla.....es igual para salidas...me suma todas las salidas , ahora lo q necesito y ya me atore es q del resultado de la entradas me reste el resultado de las salidas..si me explico..?





este es el query q tengo


Entradas:

Select Distinct Nombre,SUM(cantidad) as CantidadAcumulada from Insumos

group by Nombre


Salidas:

Select Distinct Nombre,SUM(cantidad) as CantidadAcumulada from Salidas

group by Nombre

alguien podria ayudarme...?..gracias
  #2 (permalink)  
Antiguo 01/10/2010, 10:42
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Query para stock

Buenos días FixIt te pongo el ejemplo de cómo sería la sintaxis para SQL Server

Supongamos que en tu tabla de entradas tienes algo como esto:

Código:
idEntrada,Nombre,Cantidad
--------------------------------------
1,Trapeador,5
2,Escoba,10
3,Cubeta,20
4,Trapeador,2
5,Escoba,5
6,Trapeador,10
Esto quiere decir que en total tienes 17 Trapeadores, 15 escobas y 20 cubetas

Supongamos que tienes las siguientes salidas

Código:
idSalida,Nombre,Cantidad
--------------------------------------
1,Trapeador,5
2,Escoba,7
3,Trapeador,4
4,Escoba,1
Esto quiere decir que el total de salidas de trapeadores es 9 y de escobas 8 (No hay salida de cubetas).

La consulta quedaría más o menos así

Código SQL:
Ver original
  1. SELECT E.nombre, SUM(E.cantidad - ISNULL(S.cantidad, 0)) AS stock
  2. FROM
  3. (
  4. SELECT nombre, SUM(cantidad) AS cantidad
  5. FROM Entradas
  6. GROUP BY Nombre
  7. ) E
  8. LEFT JOIN (
  9. SELECT nombre, SUM(cantidad) AS cantidad
  10. FROM Salidas
  11. GROUP BY Nombre
  12. ) S
  13. ON (E.nombre = S.nombre)
  14. GROUP BY E.nombre
  15. ORDER BY E.nombre

El resultado de esta consulta sería
Código:
Nombre,Stock
------------------------
Cubeta,20
Escoba,7
Trapeador,8
Si observas lo que se tiene que hacer en primer lugar es un LEFT JOIN entre las consultas que pusiste en tu post (el DISTINCT no es necesario). Utilizas LEFT porque hay artículos como la cubeta que no tienen ninguna salida. Finalmente haces una sumatoria de las diferencias entre entradas y salidas. La función ISNULL es para restar un 0 en caso de no existir ninguna salida ya que por default se asigna un NULL y si a un numero le restas NULL el resultado es NULL.

Si utilizas alguna DBMS diferente sería cuestión cambies la función ISNULL por su equivalente (IFNULL para MySQL, NVL para ORACLE, etc)

Saludos y si espero tus comentarios.
  #3 (permalink)  
Antiguo 01/10/2010, 19:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 49
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Query para stock

Funciono perfecto....muchas gracias...solo unas cosa podria como le puedo hacer para llamar este codigo desde un boton...?...saludos y mil gracias
  #4 (permalink)  
Antiguo 07/10/2010, 18:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Query para stock

Leonardo! gracias, me cuelgo del post, llegué complicadísimo, y me resolviste un problemón, gracias por tu dedicación! Saludos.
  #5 (permalink)  
Antiguo 09/10/2010, 20:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
hello

I was here!
  #6 (permalink)  
Antiguo 21/01/2012, 11:00
 
Fecha de Ingreso: enero-2009
Mensajes: 16
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: hello

una pregunta para alguien que me quiera responder.

es necesario la funcion SUM() externa.
no es sificiente solo con restar, ya los datos viene agrupados, solo va existir un registro de cada uno.

si estoy mal, me corrigen.
gracias.
  #7 (permalink)  
Antiguo 21/01/2012, 13:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: hello

Cita:
Iniciado por sergio31rojas Ver Mensaje
una pregunta para alguien que me quiera responder.

es necesario la funcion SUM() externa.
no es sificiente solo con restar, ya los datos viene agrupados, solo va existir un registro de cada uno.

si estoy mal, me corrigen.
gracias.
Primero: No resucites temas. Si tienes un problema, abre un thread propio y consulta tu duda.

Segundo: No se entiende lo que estás preguntando. ¿Podrías explicar el caso, o te estás refiriendo a este thread que ya estaba terminado?
__________________
¿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: query, stock
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 05:28.