2010-08-15 30 views
5

Tôi đang cố gắng đếm các bản ghi trong bảng của tôi và nhóm chúng mỗi ngày. Truy vấn hiện tại của tôi trông giống như sau:Mysql: Đếm các bản ghi (bao gồm số không) mỗi tháng

SELECT 
    count(*), 
    MONTH(time) as month, 
    YEAR(time) as year 
FROM 
    myTable 
GROUP BY 
    month, year 
ORDER BY 
    year, month 

Tác phẩm này, ngoại trừ việc tôi cũng muốn được tính trong nhiều tháng không có hồ sơ.

Có ai có thể đưa ra lời khuyên/đề xuất về cách thực hiện việc này không?

Trả lời

2

Cách đơn giản nhất để làm điều này trong MySQL là tạo một bảng gọi là months liệt kê tất cả các tháng bạn quan tâm và sử dụng LEFT JOIN vào bảng của bạn.

SELECT 
    YEAR(time) AS year 
    MONTH(time) AS month, 
    COUNT(myTable.year) AS cnt, 
FROM months 
LEFT JOIN myTable 
    ON months.year = myTable.year 
    AND months.month = myTable.month 
GROUP BY months.year, months.month 
ORDER BY months.year, months.month 

Tuy nhiên vì đây là vấn đề trình bày thường dễ dàng hơn khi chạy truy vấn như bạn đã làm và chuyển đổi kết quả trong ứng dụng khách (ví dụ: PHP).

Các vấn đề liên quan