Bei der Datenbankverwaltung erfordert die Visualisierung des Benutzerbasiswachstums häufig eine grafische Darstellung. Um ein solches Diagramm zu erstellen, verfügen Sie möglicherweise über eine Abfrage, die tägliche Benutzerzahlen innerhalb eines bestimmten Datumsbereichs erfasst. Wenn jedoch an einigen Tagen keine Benutzeraktivität vorliegt, werden diese Daten in den Ergebnissen weggelassen. Um dieses Problem zu beheben, untersuchen wir, wie Sie einen umfassenden Datumsbereich erhalten, einschließlich Datumsangaben ohne Datensätze.
In MySQL ruft die folgende Abfrage nach Tagen gruppierte Benutzerzahlen innerhalb eines angegebenen Datumsbereichs ab:
SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC
Diese Abfrage liefert zwar die meisten gewünschten Informationen, schließt jedoch Daten ohne Benutzer aus. Um leere Datumsangaben einzubeziehen, können wir den folgenden Ansatz nutzen:
SELECT * FROM ( SELECT date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date FROM (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n1, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n2, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n3, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n4, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n5 ) a WHERE date > '2011-01-02 00:00:00.000' AND date < NOW() ORDER BY date
Mit dieser Abfrage können Sie eine Folge von Datumsangaben innerhalb eines angegebenen Bereichs generieren und diese in die Ergebnisse einbeziehen, auch wenn es für diese Datumsangaben keine Entsprechung gibt Datensätze in Ihrer Datenbank.
Das obige ist der detaillierte Inhalt vonWie rufe ich alle Daten innerhalb eines Bereichs ab, einschließlich der Daten mit null Datensätzen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!