Heim > Datenbank > MySQL-Tutorial > Wie kann ich Abonnements mit Nullwerten für Mitarbeiter in MySQL mithilfe von Outer Joins zählen?

Wie kann ich Abonnements mit Nullwerten für Mitarbeiter in MySQL mithilfe von Outer Joins zählen?

Susan Sarandon
Freigeben: 2024-12-01 09:22:14
Original
625 Leute haben es durchsucht

How Can I Count Subscriptions Including Zero Values for Employees in MySQL Using Outer Joins?

Umgang mit Null-Zählungen in MySQL mit OUTER JOINS

Bei der Arbeit mit relationalen Datenbanken kann es schwierig sein, Nullwerte anzuzeigen, wenn mehrere Abfragen durchgeführt werden Tische. Betrachten Sie beispielsweise das in der Frage beschriebene Szenario, in dem wir zwei Tabellen haben: Employee und mailingSubscriptions. Die Employee-Tabelle enthält grundlegende Informationen über Mitarbeiter, während die mailingSubscriptions-Tabelle deren E-Mail-Abonnementstatus verfolgt.

Um die Anzahl der Abonnements für jeden Mitarbeiter zu zählen, können wir die folgende Abfrage verwenden:

SELECT COUNT(c.Name)
FROM Employee 
    INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;
Nach dem Login kopieren

Diese Abfrage gibt jedoch nur Zählungen für Mitarbeiter zurück, die mindestens einen Eintrag in der Tabelle „mailingSubscriptions“ haben. Wenn ein Mitarbeiter noch keine E-Mails abonniert hat, wird seine Zählung in den Ergebnissen weggelassen.

Um Nullwerte für Mitarbeiter ohne Abonnements einzubeziehen, müssen wir einen Outer Join verwenden. Mit einem Outer-Join können wir Zeilen aus zwei Tabellen kombinieren, auch wenn sie keine übereinstimmenden Werte haben. In diesem Fall verwenden wir einen Left Outer Join, der alle Zeilen aus der Employee-Tabelle beibehält, unabhängig davon, ob sie entsprechende Zeilen in der MailingSubscriptions-Tabelle haben.

Die folgende Abfrage verwendet ein linker äußerer Join, um die Abonnementanzahl für jeden Mitarbeiter zu berechnen, einschließlich derjenigen ohne Abonnements:

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

Die GROUP BY c.name-Klausel stellt sicher, dass wir die Abonnements für zählen jeden Mitarbeiter einzeln. Das Ergebnis der Abfrage ist eine Liste der Mitarbeiternamen und ihrer entsprechenden Abonnementanzahlen, wobei Nullwerte für Mitarbeiter angezeigt werden, die noch keine E-Mails abonniert haben.

Das obige ist der detaillierte Inhalt vonWie kann ich Abonnements mit Nullwerten für Mitarbeiter in MySQL mithilfe von Outer Joins zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage