2012-04-03 11 views
1

Ich habe eine Frage zu meiner MySQL-Abfrage. Ich möchte die Anzahl der Datensätze pro Tag zählen. Das funktioniert, aber ich möchte auch die Daten sehen, auf denen der Zählerstand 0 ist. Die Daten, bei denen die Summe 0 ist, ist nicht in der Ergebnismenge. Wie mache ich das? Dies ist meine aktuelle Abfrage:sql Zeige alle Daten auf Graf Abfrage

SELECT COUNT(id) AS total_per_day, 
DATE_FORMAT(reg_date, "%Y-%m-%d") as my_date 
FROM my_table GROUP BY my_date 

Vielen Dank im Voraus für Ihre Antworten.

+0

Werfen Sie einen Blick auf diesen Beitrag: http://stackoverflow.com/questions/9295616/how -zu-Holen-Liste-von-Daten-zwischen-zwei-Daten-in-mysql-select-Abfrage –

Antwort

0

Diese Abfrage -

-- Create this temp. table firstly! 
-- CREATE TABLE days(d int); 
-- INSERT INTO days(d) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); 

SELECT t.day, COUNT(mt.id) total_per_day FROM (
    SELECT 
    min_date + INTERVAL t1.d + t2.d * 10 DAY day, 
    min_date, 
    max_date 
    FROM days t1, days t2, 
    (SELECT MIN(DATE(reg_date)) min_date, MAX(DATE(reg_date)) max_date FROM my_table) t3 
    HAVING day BETWEEN min_date AND max_date) t 
    LEFT JOIN my_table mt 
    ON t.day = DATE(mt.reg_date) 
GROUP BY t.day 
0

versuchen, ein Self-Join:

SELECT COUNT(t.id) AS total_per_day, DATE_FORMAT(t.reg_date, "%Y-%m-%d") as my_date 
FROM my_table t left outher join my_table t2 on t.id=t2.id GROUP BY t.my_date