您可以使用MySQL变量构建一个自动化的结果集,用于所有日期.
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
内部查询,我只是加入用户表,没有键,所以它只是用来循环X数量的记录来代表你想要的日期…这可以是30,100,无论….只是只要桌子(在这种情况下为用户),就像您所期望的那样,记录的数量一样多.
那么,除了日子之外的结果加入了用户表,但这次是基于用户的JOIN_DATE.简单的COUNT()应该让你想要的.
“AllDaysYouWant”是分配给内部第一部分查询的别名
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
这主要表示…从用户表(但可以是任何),给我18行数据(通过限制,但可以几乎任何数量的记录,但你只需要从11月22日到12月6日,这只是14天,但是我做了18只是为了原则,几乎可以是任何东西.在Users表的上面是(select @curdate:=’2012-11-21′)sqlvars.在查询中的任何select语句,以括号括起来表源必须有一个别名,因为它只是一个变量,我将使用,不用担心它的名字.所以,这个查询在11月21日启动变量,并选择@curdate:= Date_Add … blah blah表示要采用@curdate的当前值,添加1天(现在成为11月22日),并将其存储在返回的行“MyJoinDate”中,所以现在,这个内部查询创建了从11月22日开始的日期表前进18天的数据,并有别名“AllDaysYouWant”为其余的查询参考.
我调整了可能是你遇到的查询,alias.field所有的澄清…