Requête MySQL pour afficher les enregistrements mensuels même avec des données manquantes
Question :
Dans un Dans une situation où vous devez récupérer des enregistrements mensuels à partir d'une table utilisateur, vous pouvez rencontrer des données manquantes pour certains mois. Comment pouvez-vous surmonter ce problème et assurer l'affichage de tous les mois, qu'ils contiennent ou non des données ?
Réponse :
Pour récupérer les enregistrements utilisateur mensuels, y compris ceux des mois sans entrées, une solution peut être implémentée en utilisant une combinaison d'une table dérivée et d'une jointure gauche.
SELECT COUNT(u.userID) AS total, m.month, YEAR(m.merge_date) AS year FROM ( SELECT '2013-01-01' AS merge_date UNION SELECT '2013-02-01' AS merge_date UNION SELECT '2013-03-01' AS merge_date UNION SELECT '2013-04-01' AS merge_date UNION SELECT '2013-05-01' AS merge_date UNION SELECT '2013-06-01' AS merge_date UNION SELECT '2013-07-01' AS merge_date UNION SELECT '2013-08-01' AS merge_date UNION SELECT '2013-09-01' AS merge_date UNION SELECT '2013-10-01' AS merge_date UNION SELECT '2013-11-01' AS merge_date UNION SELECT '2013-12-01' AS merge_date ) AS m LEFT JOIN users u ON MONTH(m.merge_date) = MONTH(u.userRegistredDate) AND YEAR(m.merge_date) = YEAR(u.userRegistredDate) GROUP BY m.merge_date ORDER BY 1+1;
Explication :
En utilisant la jointure gauche, la requête récupère les données de la table "utilisateurs" et de la table dérivée, garantissant que les résultats incluent tous les mois, même ceux sans aucun enregistrement utilisateur correspondant. Cette méthode gère efficacement les situations où les données de certains mois sont manquantes.
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!