Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe einer Kalendertabelle Daten mit fehlenden Daten aus einer MySQL-Tabelle extrahieren?

Wie kann ich mithilfe einer Kalendertabelle Daten mit fehlenden Daten aus einer MySQL-Tabelle extrahieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 00:52:11354Durchsuche

How Can I Extract Data with Missing Dates from a MySQL Table Using a Calendar Table?

Extrahieren von Daten mit fehlenden Daten mithilfe von Kalendertabellen

Einführung:

Die vorliegende Aufgabe besteht darin, Daten aus MySQL abzurufen Tabelle, die datumsbezogene Werte enthält. Das Ziel besteht darin, alle Daten auszuwählen, die in einen bestimmten Datumsbereich fallen, einschließlich der Fälle, in denen für bestimmte Daten keine Daten vorhanden sind.

Abfrage:

Die bereitgestellte Abfrage SELECT data FROM tbl WHERE date BETWEEN date1 AND date2 wählt effektiv Daten innerhalb eines definierten Bereichs aus. Leere Daten innerhalb dieses Intervalls werden jedoch nicht berücksichtigt.

Lösung:

Um dieses Problem zu lösen, kann das Konzept der „Kalendertabellen“ eingesetzt werden. Diese Tabellen bieten eine strukturierte Möglichkeit zur Darstellung von Daten und ermöglichen eine einfache Bearbeitung und Einbeziehung fehlender Daten.

Kalendertabellen-Implementierung:

Der folgende MySQL-Code kann dazu verwendet werden Erstellen Sie eine Kalendertabelle:

CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

Um eine Kalendertabelle zu erstellen, die das angegebene Datum umfasst Bereich:

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

Diese Abfrage generiert eine Liste von Daten im Bereich „25.06.2009“ und „01.07.2009“.

Kombiniert Kalender und Datentabelle:

Durch Linksverknüpfung der Kalendertabelle ('cal') mit der Originaltabelle ('tbl') auf der Im Feld „Datum“ können wir die gewünschten Ergebnisse erhalten:

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 alle Daten innerhalb des angegebenen Bereichs zurück, einschließlich der Daten mit leeren Datenwerten (die als NULL angezeigt werden).

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer Kalendertabelle Daten mit fehlenden Daten aus einer MySQL-Tabelle extrahieren?. 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