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 originalSELECT t1.idarticulo
, totalVentas
, totalCompras
, (totalCompras
- totalVentas
) SaldoExistencia
(SELECT p.idarticulo
, SUM(vc.cantidad
) totalVentas
FROM productos p
LEFT JOIN ventas_corte vc
ON p.idarticulo
= vc.idarticulo
(SELECT p.idarticulo
, SUM(compras.cantidad
) TotalCompras
GROUP BY p.idarticulo
) T2
ON T1.idarticulo
= T2.idarticulo
¿Se entiende?
Este tema se ha tratado ya varias veces, y es un error de concepto muy habitual entre los que se inician.