Maison >base de données >tutoriel mysql >Comment afficher les comptes zéro pour les employés sans abonnement dans les requêtes SQL ?
Résolution du problème de requête SQL : affichage du nombre de zéros dans l'agrégation COUNT
Dans le scénario présenté, l'objectif est de déterminer le nombre d'abonnements pour tous employés, même ceux qui n'ont pas d'entrée dans le tableau des abonnements mailing. La requête initiale utilisant une jointure interne n'a renvoyé que le nombre d'employés avec des enregistrements correspondants dans la table des abonnements de messagerie, à l'exclusion des employés sans abonnement.
Pour résoudre ce problème, envisagez d'utiliser une jointure gauche (LEFT JOIN) dans la requête. Une jointure gauche préserve toutes les lignes de la table de gauche (Employé), même s'il n'y a aucune ligne correspondante dans la table de droite (mailingSubscriptions). La requête suivante intègre une jointure à gauche pour obtenir le résultat souhaité :
SELECT c.name, count(m.mailid) FROM Employee c LEFT JOIN mailingSubscriptions m ON c.Name = m.EmployeeName GROUP BY c.name;
Cette requête révisée garantit que tous les employés sont inclus dans les résultats, et l'agrégation COUNT renverra 0 pour les employés sans correspondance d'abonnements dans le mailingSubscriptions tableau. La jointure externe élimine la limitation des jointures internes, qui affichent uniquement les lignes avec des enregistrements correspondants dans les deux tables.
En exécutant la requête modifiée avec une jointure gauche, la table affichera correctement le nombre d'abonnements pour tous les employés, y compris ceux sans abonnement. Cela fournit une représentation complète et précise des données, en considérant à la fois les employés avec et sans abonnement dans la table mailingSubscriptions.
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!