Ver Mensaje Individual
  #12 (permalink)  
Antiguo 26/06/2014, 14:18
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Cálculo de Stock con 2 tablas y procedimiento almacenado.

Lo que pasa es que con la estructura de datos que tienes al hacer el query que mencionas se genera un producto cartesiano es decir tienes registros duplicados, lo mas indicado seria hacer algo como esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id_producto VARCHAR(20),
  4. peso_especifico DECIMAL(6,2),
  5. unidad VARCHAR(10)
  6. )
  7.  
  8. CREATE TABLE #temp2
  9. (
  10. id_producto VARCHAR(20),
  11. consumo DECIMAL(6,2),
  12. unidad VARCHAR(10)
  13. )
  14.  
  15. INSERT INTO #temp VALUES ('cat0100001',5.00,'LTR')
  16. INSERT INTO #temp VALUES ('cat0100001',5.00,'LTR')
  17. INSERT INTO #temp VALUES ('cat0100002',6937.500,'GR')
  18.  
  19. INSERT INTO #temp2 VALUES ('cat0100001',.50,'LTR')
  20. INSERT INTO #temp2 VALUES ('cat0100002',670.00,'GR')
  21. INSERT INTO #temp2 VALUES ('cat0100002',998.00,'GR')
  22.  
  23.  
  24. SELECT t1.id_producto, t1.total-t2.total AS stock, t1.unidad FROM(
  25. SELECT id_producto,SUM(peso_especifico) AS total, unidad FROM #temp AS t1 GROUP BY id_producto,unidad
  26. ) AS t1
  27. LEFT JOIN
  28. (SELECT id_producto,SUM(consumo) AS total, unidad FROM #temp2 AS t1 GROUP BY id_producto,unidad) AS t2 ON (t1.id_producto=t2.id_producto)

con ese query obtienes lo que necesitas:

id_producto stock unidad
-------------------- --------------------------------------- ----------
cat0100001 9.50 LTR
cat0100002 5269.50 GR



saludos!

P.S: Te recomiendo un mejor diseño en tu base de datos ;) por ejemplo lo que estas haciendo con 2 tablas(el ejemplo) se puede hacer con una sola, teniendo un identificador para las entradas y las salidas, asi mismo te recomiendo investigues sobre normalizacion de tablas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 26/06/2014 a las 14:29