2010-12-28 3 views
1

Je suis en train de regrouper une requête par des intervalles de cette façon:groupe par intervalle montrant zéro

SELECT COUNT(*) AS count, i.date 
    FROM intervals i 
    LEFT JOIN dtracker dt ON 
    i.date <= dt.date AND i.date + INTERVAL (NUMSEC) SECOND >= dt.date 
    WHERE (SOME CONDITIONS) 
    GROUP BY i.date 

où je remplir le tableau « intervalles » à chaque fois (intervalles de cause peuvent changer), et NUMSEC est le changement aussi bien en fonction du tableau des intervalles.

Tout fonctionne correctement sans "WHERE", s'il n'y a pas de résultats dans certains intervalles, il affiche 0 intervalles. Mais si je mets quelques conditions dans 'WHERE' et qu'il n'y a pas de résultats, cela ne montre plus cet intervalle.

On dirait que les clauses 'WHERE' affectent l'ensemble de la requête (cela a du sens) mais je n'ai besoin que de la modifier pour la table dtracker. Comment puis-je faire ceci?

Merci beaucoup à l'avance.

+0

Réponse acceptée numéro deux. Seulement pour l'enregistrement: le compte continue faux sauf si vous changez count (*) 'par count (dt.date)'. Dans le premier cas, pour les intervalles sans résultat, indique toujours count = 1. –

Répondre

1

Remplacer WHERE avec un autre AND afin que les conditions font partie de la clause LEFT JOIN ... ON.

Questions connexes