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 `nombreCategoria` Categoria,
SUM(IF(P.estado
= 'I', 1, 0)) Inactivos
, SUM(IF(P.estado
= 'A', 1, 0)) Activos
, FROM `categorias` C
INNER JOIN `productos` P
ON C.
`idCategoria`=P.
`idCategoria`
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.