Heim >Datenbank >MySQL-Tutorial >Wie zeige ich Null-Zählungen in MySQL-JOIN-Abfragen an?

Wie zeige ich Null-Zählungen in MySQL-JOIN-Abfragen an?

Susan Sarandon
Susan SarandonOriginal
2024-12-02 16:11:12968Durchsuche

How to Display Zero Counts in MySQL JOIN Queries?

Zero Counts in MySQL Count Query anzeigen

Im Bereich der Datenbankverwaltung werden Zählvorgänge häufig zum Abrufen aggregierter Informationen verwendet. Bei der Arbeit mit JOIN-Abfragen kann es jedoch schwierig sein, Nullzahlen anzuzeigen, insbesondere wenn fehlende oder Nullwerte vorhanden sind. Dieses Problem tritt auf, wenn versucht wird, Werte für alle Zeilen in einer Tabelle zu zählen, aber einige Zeilen keine übereinstimmenden Einträge in einer verknüpften Tabelle haben.

Das Problem: Fehlende Nullzählungen

Stellen Sie sich das folgende Szenario vor: Wir haben zwei Tabellen: Employee und mailingSubscriptions. Die Tabelle „mailingSubscriptions“ enthält Abonnementinformationen für Mitarbeiter, wobei jeder Mitarbeiter einen eindeutigen EmployeeName hat. Wir möchten die Anzahl der Abonnements ermitteln, die jedem Mitarbeiter zugeordnet sind, einschließlich der Mitarbeiter ohne Abonnements (d. h. mit Nullzählungen).

Mit der folgenden Abfrage:

Select COUNT(c.Name) 
From Employee 
    INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;

Wir rufen nur ab zählt für Mitarbeiter, die mindestens einen Eintrag in der Tabelle mailingSubscriptions haben. Mitarbeiter ohne Abonnements werden von den Ergebnissen ausgeschlossen.

Die Lösung: Link JOIN und GROUP BY

Um dieses Problem zu beheben und Zählungen für alle Mitarbeiter zu erhalten, können wir verwenden eine LEFT JOIN- und eine GROUP BY-Klausel. Ein LEFT JOIN stellt sicher, dass alle Zeilen aus der Employee-Tabelle in die Ergebnisse einbezogen werden, auch wenn es in der mailingSubscriptions-Tabelle keine passenden Zeilen gibt. Die GROUP BY-Klausel gruppiert dann die Ergebnisse nach Mitarbeiternamen, sodass wir die Anzahl der Abonnements für jeden Mitarbeiter zählen können:

SELECT c.name, count(m.mailid)
FROM Employee 
   LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName
GROUP BY c.name;

Mit dieser modifizierten Abfrage rufen wir jetzt die Abonnementanzahlen für alle Mitarbeiter ab, einschließlich diejenigen ohne Abonnements. Dies ermöglicht uns einen vollständigen Überblick über die Abonnementdaten der Mitarbeiter, unabhängig von ihrem Abonnementstatus.

Das obige ist der detaillierte Inhalt vonWie zeige ich Null-Zählungen in MySQL-JOIN-Abfragen an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn