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
l'intérieur count(*) a une
Besoin de prendre plus de temps à lire des choses! Raté le
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'entrepriseBesoin de prendre plus de temps à lire des choses! Raté le
GROUP BY
.
OriginalL'auteur JonoB | 2011-03-16
Vous devez vous connecter pour publier un commentaire.
Je crois que vous pouvez simplifier:
Je pense que c'est ce qui est demandé pour - nombre d'entreprises ayant au moins un produit.
la requête va compter combien de société unique id sont dans le résultat, et le résultat est filtrée uniquement aux entreprises qui ont au moins un produit. très bon travail @Blorgbeard - je suis corrigé
Ouais, je m'excuse, j'ai lu les exigences de mal. Oui Blorgbeard serait correct.
Grâce Blorgbeard, qui semble fonctionner parfaitement.
OriginalL'auteur Blorgbeard