MySQL select count

Je suis en train de compter le nombre d'entreprises qui ont au moins un produit de la requête suivante

SELECT count(*)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
GROUP by c.id

Donc, cela me montre une liste de toutes les entreprises, et le nombre de produits de chaque entreprise.

Ce que je suis en train de réaliser est un nombre de sociétés ci-dessus.

Ceci peut être réalisé comme suit:

SELECT count(*)
FROM ( 
    SELECT count(*)
    FROM company c
    JOIN product p on c.id = product.company_id
    WHERE p.is_deleted = 0
    AND c.is_customer = 1
    and c.company_type_id = 5
    GROUP by c.id) AS t1

Ainsi, cela me donne le résultat correct, mais je me demandais simplement si il y a un moyen plus efficace de faire les choses.

Il semble que vous avez fait un très bon travail ici. je ne vois pas de place pour l'amélioration, sauf si vous souffrez de problèmes de performances
Sûrement la requête ci-dessus retournera toujours 1?! Vous avez un COUNT(*) qui retourne un champ unique, alors vous SELECT COUNT(*) de nouveau pour un même champ...j'ai loupé quelque chose?
l'intérieur count(*) a une group by - il renvoie d'un compte par l'entreprise
Besoin de prendre plus de temps à lire des choses! Raté le GROUP BY.

OriginalL'auteur JonoB | 2011-03-16