Daten zwischen Datumsangaben abrufen: Leere Datensätze füllen
In MySQL wird die Auswahl von Daten innerhalb eines bestimmten Datumsbereichs üblicherweise mit dem BETWEEN-Operator erreicht. Dieser Ansatz kann jedoch dazu führen, dass Daten fehlen, wenn keine Daten vorhanden sind. Um dieses Problem zu lösen, wird eine Technik mit „Kalendertabellen“ eingesetzt.
Das Konzept einer Kalendertabelle besteht darin, eine Tabelle zu erstellen, die eine Folge von Datumsangaben innerhalb des gewünschten Bereichs enthält. Dies wird mit dem folgenden Code erreicht:
CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
Diese Tabelle stellt einen Zahlenbereich von 0 bis 9 bereit. Um die Kalendertabelle zu generieren, verbinden wir Ints mehrmals mit sich selbst, um eine Liste von Datumsintervallen zu erstellen:
SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i
Das Ergebnis ist eine Tabelle mit einer Abfolge von Daten von „25.06.2009“ bis „04.07.2009“. Um die Daten abzurufen, haben wir die Kalendertabelle mit der Originaltabelle verknüpft:
SELECT cal.date, tbl.data FROM ( SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i ) cal LEFT JOIN tbl ON cal.date = tbl.date WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
Diese Abfrage gibt die Daten für alle Daten zwischen „25.06.2009“ und „01.07.2009“ zurück. einschließlich Zeilen ohne Daten, die mit „0“ gefüllt sind.
Das obige ist der detaillierte Inhalt vonWie füllt man fehlende Daten beim Abrufen von MySQL-Daten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!