Remplissage de dates vides dans les résultats SQL
Lorsque vous travaillez avec des données contenant des lacunes, comme dans l'exemple fourni, il devient nécessaire de remplir dates vides pour garantir une représentation complète et précise. Voici quelques approches pour résoudre ce problème :
Solution MySQL
Une solution simple consiste à créer une table temporaire à l'aide d'une procédure stockée MySQL. Ce tableau contiendra toutes les dates possibles dans une plage spécifiée. En joignant la table temporaire avec les résultats de votre requête, vous pouvez renseigner les dates manquantes tout en préservant les décomptes existants :
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
Solution Perl
Alternativement, vous peut utiliser le module Date::Calc en Perl pour générer une liste de dates et remplir celles vides à l'aide d'un foreach boucle :
use Date::Calc qw(:all); my @dates; my ($d1, $d2) = ('2008-08-05', '2008-08-07'); # Modify these as needed my $dates_per_month = @DaysInMonth[year($d2)-1900][month($d2)-1]; my $d = $d1; while ($d < $d2) { push @dates, $d; $d = NextDay($d); } my %counts; while (my ($date, $sum) = $sth->fetchrow) { $counts{$date} = $sum; } foreach my $date (@dates) { print CSV "$date,$counts{$date} || 0\n" # Print 0 for empty dates }
Considérations supplémentaires
La solution la plus appropriée dépendra des exigences spécifiques et de la disponibilité des ressources. Pour les grands ensembles de données, l'approche des procédures stockées peut être plus performante, tandis que la solution Perl offre plus de flexibilité. Tenez compte des facteurs supplémentaires suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!