Maison > base de données > tutoriel mysql > Comment afficher les comptes zéro dans les requêtes MySQL JOIN ?

Comment afficher les comptes zéro dans les requêtes MySQL JOIN ?

Susan Sarandon
Libérer: 2024-12-02 16:11:12
original
892 Les gens l'ont consulté

How to Display Zero Counts in MySQL JOIN Queries?

Affichage des comptes nuls dans la requête de comptage MySQL

Dans le domaine de la gestion de bases de données, les opérations de comptage sont souvent utilisées pour récupérer des informations globales. Cependant, lorsque vous travaillez avec des requêtes JOIN, il peut être difficile d'afficher des comptes nuls, en particulier lorsqu'il y a des valeurs manquantes ou nulles. Ce problème survient lorsque vous tentez de compter les valeurs de toutes les lignes d'une table, mais que certaines lignes n'ont aucune entrée correspondante dans une table jointe.

Le problème : les comptes zéro manquants

Considérez le scénario suivant : nous avons deux tables, Employee et mailingSubscriptions. La table mailingSubscriptions contient des informations d'abonnement pour les employés, chaque employé ayant un EmployeeName unique. Nous souhaitons déterminer le nombre d'abonnements associés à chaque employé, y compris les employés sans abonnement (c'est-à-dire affichant zéro décompte).

À l'aide de la requête suivante :

Select COUNT(c.Name) 
From Employee 
    INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;
Copier après la connexion

Nous récupérerons uniquement compte pour les employés qui ont au moins une entrée dans la table mailingSubscriptions. Les salariés sans abonnements seront exclus des résultats.

La solution : quitter JOIN et GROUP BY

Pour remédier à ce problème et obtenir le décompte de tous les salariés, nous pouvons utiliser une LEFT JOIN et une clause GROUP BY. Un LEFT JOIN garantit que toutes les lignes de la table Employee sont incluses dans les résultats, même s'il n'y a aucune ligne correspondante dans la table mailingSubscriptions. La clause GROUP BY regroupe ensuite les résultats par nom d'employé, nous permettant de compter le nombre d'abonnements pour chaque employé :

SELECT c.name, count(m.mailid)
FROM Employee 
   LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName
GROUP BY c.name;
Copier après la connexion

En utilisant cette requête modifiée, nous récupérons désormais le nombre d'abonnements pour tous les employés, y compris ceux qui n’ont aucun abonnement. Cela nous permet d'avoir une vue complète des données d'abonnement des collaborateurs, quel que soit leur statut d'abonnement.

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