Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/02/2012, 18:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Dos counts con diferentes condicionales en la misma consulta.

La forma ortodoxa sería invocando la tabla producto dos veces, una para verlo los activos yotra los inactivos. Pero desde el punto de vista de la performance no es buena idea porque implicaría hacer dos table scanning para buscar datos demasiado simples.
Hay una forma, que en realidad es medio un truco: Usar IF() y SUM():
Código MySQL:
Ver original
  1.    `nombreCategoria` Categoria,
  2.         SUM(IF(P.estado = 'I', 1, 0)) Inactivos,
  3.         SUM(IF(P.estado = 'A', 1, 0)) Activos,
  4.         COUNT(*) Total_Productos
  5. FROM `categorias` C INNER JOIN  `productos` P ON  C.`idCategoria`=P.`idCategoria`
  6. GROUP BY Categoria
Esto, suponiendo que la tabla producto tiene un campo "estado", de tipo CHAR(1), que guarda "A" o "I", según sea el caso. Si lo haces de otro modo, entonces debes poner en la condición del IF() lo que corresponda.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)