Bạn có thể tạo tập kết quả tự động bằng cách sử dụng các biến MySQL cho tất cả các ngày bạn muốn.
select
AllDaysYouWant.MyJoinDate,
count( U.User_ID ) as NumberJoined
from
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
LEFT JOIN Users U
on AllDaysYouWant.MyJoinDate = U.User_JoinDate
group by
AllDaysYouWant.MyJoinDate
Truy vấn bên trong, tôi chỉ tham gia vào bảng người dùng mà không có khóa, vì vậy nó chỉ được sử dụng để xoay vòng qua số bản ghi X để biểu thị khoảng thời gian trong ngày bạn muốn ... Đây có thể là 30, 100, bất cứ điều gì .... miễn là bảng (trong trường hợp này là người dùng), có nhiều bản ghi như bạn mong đợi.
SAU ĐÓ, kết quả của không có gì ngoài ngày được kết hợp vào bảng người dùng, nhưng lần này, dựa trên JOIN_DATE của người dùng. COUNT () đơn giản sẽ mang lại cho bạn những gì bạn muốn.
"AllDaysYouWant" là bí danh được gán cho truy vấn nội bộ phần đầu tiên của
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
Về cơ bản, điều này nói lên ... Từ bảng người dùng (nhưng có thể là bất kỳ), hãy cung cấp cho tôi 18 hàng dữ liệu (thông qua giới hạn, nhưng có thể là gần như bất kỳ số lượng bản ghi nào, nhưng bạn chỉ cần từ ngày 22 tháng 11 đến ngày 6 tháng 12, tức là chỉ 14 ngày, nhưng tôi đã làm 18 ngày chỉ vì nguyên tắc, nó có thể là hầu hết mọi thứ. Phía trên bảng Người dùng là (select @curDate:='2012-11-21') sqlvars. Bất kỳ câu lệnh chọn nào trong một truy vấn được đặt trong dấu ngoặc đơn là nguồn bảng phải được đặt một bí danh và vì nó chỉ là một biến mà tôi sẽ sử dụng, không quan tâm tên của nó là gì. Vì vậy, truy vấn này bắt đầu biến vào ngày 21 tháng 11 và Select @curDate:=Date_Add ... blah blah yêu cầu lấy giá trị hiện tại của @curDate, thêm 1 ngày vào giá trị đó (bây giờ là ngày 22 tháng 11) và lưu trữ giá trị đó trong hàng trả về "MyJoinDate". Vì vậy, bây giờ, truy vấn bên trong này tạo bảng chỉ các ngày bắt đầu từ ngày 22 tháng 11 chuyển tiếp dữ liệu có giá trị 18 ngày và có bí danh "AllDaysYouWant" cho phần còn lại của truy vấn để tham khảo.
Tôi đã điều chỉnh truy vấn có thể là những gì bạn gặp phải, thành alias.field mọi thứ để làm rõ ...