Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

COUNT() con 2 tablas, intento usar GROUP BY

Estas en el tema de COUNT() con 2 tablas, intento usar GROUP BY en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/11/2010, 08:30
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 2 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.
  #2 (permalink)  
Antiguo 02/11/2010, 08:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: COUNT() con 2 tablas, intento usar GROUP BY

Prueba esta

Código SQL:
Ver original
  1. SELECT
  2. producto.nombre,
  3. t1.conteo AS Ingresos,
  4. t2.conteo AS Salidas
  5. FROM
  6. producto
  7. LEFT JOIN
  8. (SELECT fk_producto,COUNT(*) conteo FROM ingreso GROUP BY fk_producto) t1 ON (producto.id_producto = t1.fk_producto)
  9. LEFT JOIN
  10. (SELECT fk_producto,COUNT(*) conteo FROM salida GROUP BY fk_producto) t2 ON (producto.id_producto = t2.fk_producto)
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: count, group, intento, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:56.