2010-12-28 12 views
1

Ich versuche, eine Abfrage durch Intervalle auf diese Weise zur Gruppe:Gruppe von Intervall zeigt Null

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 

, wo ich die Tabelle ‚Intervalle‘ jedes Mal (Ursache Intervalle ändern) füllen, und NUMSEC verändert ebenso abhängig von der Intervalltabelle.

Alles funktioniert ohne 'WHERE', wenn es in einigen Intervallen keine Ergebnisse gibt, zeigt es 0 Intervalle. Aber wenn ich einige Bedingungen in 'WHERE' gebe und es keine Ergebnisse gibt, wird dieses Intervall nicht mehr angezeigt.

Scheint wie 'WHERE' Klauseln betrifft die gesamte Abfrage (es ist sinnvoll), aber ich brauche es nur auf Dtracker-Tabelle auswirken. Wie kann ich das machen?

Vielen Dank im Voraus.

+0

Akzeptierte Antwort Nummer zwei. Nur für den Rekord: die Zählung wird falsch fortgesetzt, es sei denn, Sie ändern "count (*)" durch "count (dt.date)". Im ersten Fall wird für Intervalle mit null Ergebnissen immer noch count = 1 angezeigt. –

Antwort

1

ersetzen WHERE mit einer anderen AND so dass die Bedingungen Teil der LEFT JOIN ... ON Klausel werden.