2010-04-26 6 views
1

J'ai un tableau avec des statistiques typiques sur la page vue et les emails. Un e-mail crée une ligne et l'affichage de la page crée une ligne ...Comment obtenir MYSQL pour montrer des résultats Zéro quand on se joint à soi-même? (par exemple: Statistiques mensuelles)

Je souhaite tracer les pages vues et les e-mails tous les jours au cours des 30 derniers jours (par exemple), je dois donc montrer le jour et la valeur ... même si c'est ZERO. Je ne peux pas manquer des jours de mes résultats ou des pauses de tableau.

PageViews Table: 
UniqueID | PageID | DateTime 

Emails Table: 
UniqueID | SenderEmail | RecipientID | RecipientEmail | DateTime 

Je ne ai pas besoin que cela soit une question, mais le problème reste le même pour les deux requêtes ... S'il y a des jours (ou heures ou mois .. selon le groupe par plage) où page spécifique n'a pas été visualisée, elle est simplement omise du tableau des résultats.

De même, s'il y a des jours où il y avait des pages vues, mais maintenant des e-mails, le nombre email requête a des trous dans ...

Essentiellement, je suis en train de créer un graphique de type Google Analytics et le besoin les lignes pour montrer ZÉRO pour les jours où il n'y a pas de données dans mes tableaux de statistiques ...

Je pense qu'une sorte d'auto-jointure gauche pourrait fonctionner mais ne semble pas fonctionner. Je me suis même amusé avec une table entière avec une seule colonne (valeurs) et des lignes pour 1-31

Est-ce que l'un de vous les gourous MYSQL peut vous aider?

+0

Vous voulez deux cartes différentes pour chaque table ou une sorte de graphique combiné? – GetFree

+0

J'essaie de faire un graphique combiné mais l'axe commun va à partir de maintenant 31 jours ... donc il y a des jours où une page peut ne pas avoir de vues et il y a certainement des jours où il n'y a pas d'emails. J'ai donc besoin de montrer les zéros pour que ça fonctionne bien. Je pourrais utiliser PHP pour tamponner les résultats, mais il doit y avoir un moyen de le faire avec une requête bien conçue? –

Répondre

0

La solution standard pour ce problème consiste à créer une table d'aide et à la remplir avec toutes les dates correspondant à vos requêtes anticipées.

est ici un SO applicable Q & A:

How to fill date gaps in MySQL?

Questions connexes