Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/10/2013, 21:58
Avatar de gnzsoloyo
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: Problema con INNERJOIN sumatoria no correcta.

No puedes usar una tabla de compras para realizar un JOIN contra una tabla ventas. SOn conceptos incompatibles. Ese tipo de resumen de movimiento se realiza de otro modo.
Por lo pronto, no puedes hacer un resumen de compras y ventas si usar la tabla productos, porque que tengas compras en un determinado período, no implica necesariamente que tengas ventas de ese producto, para el mismo período, y viceversa.
Ese tipo de resumenes se realiza, como dije, con la tabla Productos pero por medio de subconsultas donde obtienes los totales de cada concepto por separado:
Código MySQL:
Ver original
  1. SELECT t1.idarticulo, totalVentas, totalCompras, (totalCompras - totalVentas) SaldoExistencia
  2.     (SELECT p.idarticulo, SUM(vc.cantidad) totalVentas
  3.     FROM productos p LEFT JOIN ventas_corte vc ON p.idarticulo = vc.idarticulo
  4.     GROUP BY p.idarticulo) T1
  5.     INNER JOIN
  6.     (SELECT p.idarticulo,  SUM(compras.cantidad) TotalCompras
  7.     FROM FROM productos p LEFT JOIN compras c ON p.idarticulo = c.idarticulo
  8.     GROUP BY p.idarticulo) T2 ON T1.idarticulo = T2.idarticulo
  9. ORDER BY t1.idarticulo
¿Se entiende?
Este tema se ha tratado ya varias veces, y es un error de concepto muy habitual entre los que se inician.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)