Fehlende Daten in SQL-Ergebnissen auffüllen
Beim Abfragen einer Datenbank nach einem Datumsbereich treten häufig Lücken in den Daten auf. Um dieses Problem zu lösen, gibt es mehrere einfache Ansätze, um die Ergebnisse mit leeren Datumsangaben und entsprechenden Zählungen aufzufüllen.
Auf der MySQL-Seite
Eine Möglichkeit besteht darin, eine gespeicherte Prozedur zu erstellen Dadurch wird eine temporäre Tabelle mit allen möglichen Daten innerhalb des angegebenen Bereichs generiert. Diese Tabelle kann dann mit den Abfrageergebnissen verknüpft werden, um die fehlenden Daten zu ergänzen.
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;
Auf der Perl-Seite
Wenn Perl-Module wie Date:: y verfügbar sind, können Sie über einen Datumsbereich iterieren und nach leeren Datumsangaben in den Abfrageergebnissen suchen. Wenn gefunden, fügen Sie einen Null-Zählungseintrag für dieses Datum hinzu.
use Date::y; # Get the date range my $d1 = '2008-08-05'; my $d2 = '2008-08-07'; # Iterate over the date range my $date = Date::y->date($d1); while ($date <= Date::y->date($d2)) { # Check if the date exists in the query results if (! exists $results{$date}) { # Add the date with a zero count $results{$date} = 0; } $date = $date->next; }
Das obige ist der detaillierte Inhalt vonWie fülle ich fehlende Daten in SQL-Abfrageergebnissen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!