Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/11/2010, 08:30
Salov
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
COUNT() con 2 tablas, intento usar GROUP BY

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.