Maison > base de données > tutoriel mysql > Comment inclure des comptes zéro dans les requêtes MySQL COUNT pour les tables associées ?

Comment inclure des comptes zéro dans les requêtes MySQL COUNT pour les tables associées ?

Mary-Kate Olsen
Libérer: 2024-11-29 16:41:14
original
741 Les gens l'ont consulté

How to Include Zero Counts in MySQL COUNT Queries for Related Tables?

Résoudre le problème des 0 comptes manquants dans la requête MySQL COUNT

Lorsque vous essayez de calculer le nombre d'abonnements pour chaque client, il est courant de rencontrez le problème où la requête renvoie uniquement les décomptes pour les clients qui ont des entrées dans une table associée. Pour résoudre ce problème et inclure les clients sans abonnement, une approche alternative est nécessaire.

Considérez le scénario suivant : vous disposez de deux tables, Employee et mailingSubscriptions. La table Employee contient des informations sur les employés, tandis que la table mailingSubscriptions stocke les détails de leurs abonnements.

Pour obtenir le nombre d'abonnements pour chaque employé, une requête simple serait :

SELECT COUNT(c.Name)
FROM Employee c
INNER JOIN mailingSubscriptions AS m ON c.Name = m.EmployeeName;
Copier après la connexion

Cependant , cette requête renverra uniquement les résultats pour les employés disposant d'au moins un abonnement. Pour inclure les employés sans abonnement et afficher 0 décompte, MySQL propose une autre solution : la jointure gauche.

SELECT c.Name, COUNT(m.MailId)
FROM Employee c
LEFT JOIN mailingSubscriptions AS m ON c.Name = m.EmployeeName
GROUP BY c.Name;
Copier après la connexion

Dans cette requête révisée, nous utilisons une jointure gauche pour connecter les tables Employee et mailingSubscriptions. L'opérateur LEFT JOIN garantit que toutes les lignes de la table Employee sont incluses dans le résultat, même si elles n'ont pas de lignes correspondantes dans la table mailingSubscriptions.

COUNT(m.MailId) renvoie le nombre d'abonnements pour chacun employé. En regroupant les résultats par c.Name, nous pouvons obtenir un décompte pour chaque employé, y compris ceux qui n'ont pas d'abonnement.

Cette requête ajustée fournit une vue plus complète des données, présentant à la fois le nombre d'abonnements pour employés avec des entrées dans mailingSubscriptions et 0 compte pour les employés sans aucune entrée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal