Tengo tres tablas, ingreso, salida y producto.
ingreso (id_ingreso, fk_producto)
salida (id_salida, fk_producto)
producto(id_producto, nombre)
Necesitaba obtener el siguiente query:
Producto | ingresos | Salidas
-------------------------------------
Manzana | 5 | 3
Naranjas | 8 | 6
y encontre esta forma de hacerlo
SELECT
producto.nombre,
(SELECT COUNT(*) FROM ingreso
WHERE ingreso.fk_producto = id_producto) AS Ingresos,
(SELECT COUNT(*) FROM salida
WHERE salida.fk_producto = id_producto) AS Salidas
FROM
producto
================================================== =====
Mi consulta es saber si esto es optimo, o si es mejor hacerlo con un GROUP BY intente con la siguiente consulta:
SELECT
producto.nombre,
COUNT(ingreso.id_ingreso) AS Ingresos,
COUNT(salida.id_salida) AS Salidas
FROM
producto
LEFT JOIN ingreso ON (producto.id_producto = ingreso.fk_producto)
LEFT JOIN salida ON (producto.id_producto = salida.fk_producto)
GROUP BY
producto.PRO_ID
Pero me arroja:
Producto | ingresos | Salidas
-------------------------------------
Manzana | 5 | 5
Naranjas | 8 | 8
Lo que es un error, sin embargo si se tratara de una tabla me entrega los valores que corresponden, es decir si hago esta consulta solo con la tabla ingreso o solo con tabla salida, funciona bien, pero con ambas no me sale.