我有两个表项目和项目资助。
产品表就像,
+-----------------+
| id | date_created |
+-----------------+
| 1 | 2014-09-10 |
| 2 | 2014-05-20 |
| 3 | 2014-02-20 |
| 4 | 2014-02-20 |
+-----------------+
我的project_funded表就像,
+------------------------------+
| id | date_funded | Proj_id |
+------------------------------+
| 1 | 2014-09-10 | 1 |
| 2 | 2014-09-11 | 1 |
| 3 | 2014-09-11 | 1 |
| 4 | 2014-09-12 | 1 |
+------------------------------+
现在如何从项目开始日期开始获取项目1 next 1 week data count
。
示例, Project_id 1 在2014-09-10,
启动我需要像
这样的结果2014-09-10 => 1
2014-09-11 => 2
2014-09-12 => 1
答案 0 :(得分:0)
这是一个基于...的群组的基本查询。
select
pf.date_funded,
count(*) as totalEntries
from
project_funded pf
where
pf.proj_id = 1
group by
pf.date_funded
order by
pf.date_funded
现在,如果您只关心项目创建日期后的一周,则需要额外加入项目表,并且需要基于项目创建日期的日期范围限制。
select
pf.date_funded,
count(*) as totalEntries
from
project_funded pf
JOIN project p
on pf.proj_id = p.id
where
pf.proj_id = 1
AND pf.date_funded >= p.date_created
AND pf.date_funded < DATE_ADD(p.date_created, INTERVAL 8 DAY);
group by
pf.date_funded
order by
pf.date_funded
在上面的日期示例中,您提到了1周(7天),这可能是一个间隔1周。但是,如果您的日期是基于日期/时间,那么您真的希望所有7天到达并延迟到晚上11:59:59。这就是为什么我做了不到8天 - 所以它包括从第8天到第8天结束前的7天。