Lamentablemente la consulta es un poco compleja, porque para evitar la multiplicación de datos ambas cuentas (Compras y Ventas) deben estar consolidadas ya por separado, lo que significa que hay que hacer primero las subconsultas en el FROM y entonces hacer el INNER JOIN correspondiente.
La respuesta es en definitiva:
Código MySQL:
Ver original T1.IdArt
, T1.Modelo
, Compras
, IFNULL(Ventas
, 0) Ventas
, (Compras
- IFNULL(Ventas
, 0) ) Saldo
A.IdArt,
A.Modelo,
Articulos A
A.IdArt,
Articulos A
Respecto a las tablas, hay algunos cuantos defectos formales, pero los más importantes son:
- Usas campos DATETIME para Fecha y para Hora, cuando deberías usar DATE y TIME para cada uno. De ese modo evitas basura en los datos que puede, luego, generar errores no detectables.
- Estas usando FK sin declararlas, a pesar de que las tablas si son InnoDB.
- Hay campos que no usas. Si no los usas o no deben existir, o debes implementarlos en la programación.
- Hay identificadores adicionales en las tablas de compra y venta que no se entiened para qué se usan.