Maison > base de données > tutoriel mysql > Comment remplir les dates manquantes dans les résultats d'une requête SQL avec un nombre nul ?

Comment remplir les dates manquantes dans les résultats d'une requête SQL avec un nombre nul ?

DDD
Libérer: 2024-12-12 21:51:15
original
312 Les gens l'ont consulté

How to Fill Missing Dates in SQL Query Results with Zero Counts?

Remplissage de dates vides dans les résultats SQL

Lors de l'interrogation de MySQL pour exporter les dates et les décomptes d'une table, des espaces dans la plage de dates peuvent laisser quelques jours portés disparus. Pour combler ces lacunes avec des entrées à nombre nul, une approche simple consiste à utiliser une procédure stockée côté serveur.

Remplissage côté serveur avec procédure stockée

Ce qui suit La procédure stockée crée une table temporaire contenant toutes les dates possibles dans une plage spécifiée. Cette table est ensuite jointe à gauche aux résultats de la requête pour remplir les dates manquantes.

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
Copier après la connexion

Cette procédure prend deux dates en entrée et génère une table temporaire foo avec toutes les dates potentielles entre elles. Il effectue ensuite une jointure gauche avec la requête d'origine pour inclure toutes les dates manquantes et renvoyer un ensemble de données complet.

Vérification côté client (facultatif)

De plus, un simple check peut être implémenté côté client (par exemple, Perl) pour gérer les cas où la date actuelle n'est pas égale à la date précédente plus un jour. Dans de tels cas, des chaînes supplémentaires avec un compte nul peuvent être ajoutées à la sortie.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal