Récupération de données entre des dates : remplissage d'enregistrements vides
Dans MySQL, la sélection de données dans une plage de dates spécifiée est généralement réalisée à l'aide de l'opérateur BETWEEN. Cependant, cette approche peut entraîner des dates manquantes lorsqu'aucune donnée n'est présente. Pour résoudre ce problème, une technique impliquant des « tableaux de calendrier » est utilisée.
Le concept d'un tableau de calendrier est de créer un tableau qui contient une séquence de dates dans la plage souhaitée. Ceci est réalisé en utilisant le code suivant :
CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
Cette table fournit une plage de nombres de 0 à 9. Pour générer la table du calendrier, nous joignons les ints à lui-même plusieurs fois pour créer une liste d'intervalles de dates :
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
Le résultat est un tableau avec une séquence de dates allant du '2009-06-25' au '2009-07-04'. Pour récupérer les données, nous avons laissé joindre la table du calendrier avec la table d'origine :
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';
Cette requête renvoie les données pour toutes les dates comprises entre le '2009-06-25' et le '2009-07-01', y compris les lignes sans données renseignées avec « 0 ».
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!