(修订版)
我有两个表像下面获取引起的,包括不存在日期的给定范围内的所有日期
表subscribers
:
id | service_id | subscribe_date
1 | 1 | 2016-08-10
2 | 2 | 2016-08-09
3 | 2 | 2016-08-05
4 | 1 | 2016-08-03
表services
:
id | service_name
1 | test1
2 | test2
3 | test2
subscribers.service_id
有一个外键services.id
我想从这个表中数据如下图所示:
service_id | subscribe_date | count
1 | 2016-08-10 | 1
1 | 2016-08-09 | 0
2 | 2016-08-10 | 0
2 | 2016-08-09 | 1
3 | 2016-08-10 | 0
3 | 2016-08-09 | 0
我想用下面的查询来获得这样的数据:
SELECT COUNT(*), subscribe_date, service_id
FROM subscribers
INNER JOIN services ON subscribers.service_id = services.id
WHERE subscribe_date BETWEEN '2016-08-09' AND '2016-08-10'
GROUP BY service_id, subscribe_date;
但我不是成功的。我得到如下的结果:
1 | 2016-08-10 | 1
2 | 2016-08-09 | 1
请问您能解释一下预期的输出吗? – 1000111
输出应显示每个服务订阅计数在特定日期,在哪里导致 – Ali
这是不可能的,除非你从“日历”表获得帮助。但是这样做肯定会加剧代码的美感。最好在应用程序级别做这件事。 – 1000111