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;
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;
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!