Leere Daten in SQL-Ergebnissen auffüllen
Bei der Abfrage von MySQL zum Exportieren von Daten und Zählungen aus einer Tabelle können Lücken im Datumsbereich entstehen Tage unberücksichtigt. Um diese Lücken mit Null-Anzahl-Einträgen zu schließen, besteht ein einfacher Ansatz darin, eine serverseitig gespeicherte Prozedur zu verwenden.
Serverseitiges Auffüllen mit gespeicherter Prozedur
Das Folgende Die gespeicherte Prozedur erstellt eine temporäre Tabelle, die alle möglichen Daten innerhalb eines angegebenen Bereichs enthält. Diese Tabelle wird dann links mit den Abfrageergebnissen verknüpft, um die fehlenden Datumsangaben auszufüllen.
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
Dieser Vorgang verwendet zwei Datumsangaben als Eingabe und generiert eine temporäre Tabelle foo mit allen möglichen Datumsangaben dazwischen. Anschließend wird ein Left-Join mit der ursprünglichen Abfrage durchgeführt, um alle fehlenden Daten einzuschließen und einen vollständigen Datensatz zurückzugeben.
Clientseitige Prüfung (optional)
Zusätzlich eine einfache Die Prüfung kann auf der Clientseite (z. B. Perl) implementiert werden, um Fälle zu behandeln, in denen das aktuelle Datum nicht mit dem vorherigen Datum plus einem Tag übereinstimmt. In solchen Fällen können der Ausgabe zusätzliche Zeichenfolgen mit der Anzahl Null hinzugefügt werden.
Das obige ist der detaillierte Inhalt vonWie fülle ich fehlende Daten in SQL-Abfrageergebnissen mit Nullzählungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!