Je veux récupérer le nombre de registrations d'une période donnée (disons une semaine), ce qui n'est pas si difficile à faire, mais je me demandais si est en tout cas possible à MySQL de retourner un zéro pour les jours qui n'ont pas d'enregistrements.Comment récupérer les données de Mysql pour les jours sans statistiques
Un exemple: DONNÉES:
ID_Profile datCreate 1 2009-02-25 16:45:58 2 2009-02-25 16:45:58 3 2009-02-25 16:45:58 4 2009-02-26 10:23:39 5 2009-02-27 15:07:56 6 2009-03-05 11:57:30
SQL:
SELECT DAY(datCreate) as RegistrationDate, COUNT(ID_Profile) as NumberOfRegistrations FROM tbl_profile WHERE DATE(datCreate) > DATE_SUB(CURDATE(),INTERVAL 9 DAY) GROUP BY RegistrationDate ORDER BY datCreate ASC;
Dans ce cas, le résultat serait:
RegistrationDate NumberOfRegistrations 25 3 26 1 27 1 5 1
Il est évident que je suis absent quelques jours entre. Actuellement je résous ceci dans mon code php, mais je me demandais si MySQL avait un moyen de renvoyer automatiquement 0 pour les jours/lignes manquants. Ce serait le résultat souhaité:
RegistrationDate NumberOfRegistrations 25 3 26 1 27 1 28 0 1 0 2 0 3 0 4 0 5 1
De cette façon, nous pouvons utiliser MySQL pour résoudre tous les problèmes concernant le nombre de jours dans un mois au lieu de compter sur le code php pour calculer pour chaque mois combien de jours il y a, depuis MySQL a cette version de fonctionnalité.
Merci à l'avance
@Paul - Vous me battez pour ça. Y at-il un moyen de définir une valeur par défaut de zéro, de sorte que la jointure à gauche mettra un zéro au lieu de null pour les jours sans données? –
Oui, utilisez IFNULL (col, 0) –
Est-ce que cela veut dire que vous avez une table contenant simplement toutes les dates à partir de maintenant jusqu'à la fin de chaque fois que vous souhaitez arrêter de faire des statistiques? Fondamentalement une table avec 365 dossiers par an? Merci pour la réponse rapide. – n0xie