测试的表和数据大约是这样的
DROP TABLE IF EXISTS `tt`;
CREATE TABLE `tt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`reccount` int(11) DEFAULT NULL,
`dt` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;
-- --
-- Records of tt
-- --
INSERT INTO `tt` VALUES ("1", "a", "10", "2016-08-01");
INSERT INTO `tt` VALUES ("2", "a", "11", "2016-08-03");
INSERT INTO `tt` VALUES ("3", "a", "12", "2016-08-04");
INSERT INTO `tt` VALUES ("4", "b", "8", "2016-08-01");
INSERT INTO `tt` VALUES ("5", "b", "15", "2016-08-05");

期望是这样的,例如输入时间段 ,从 2016-08-01到2016-08-05,显示相似这样,
a 10 2016-08-01
a 0 2016-08-02
a 11 2016-08-03
a 12 2016-08-04
a 0 2016-08-05
b 8 2016-08-01
b 0 2016-08-02
b 0 2016-08-03
b 0 2016-08-04
b 15 2016-08-05
每个不同的name,每天有数据显示数据,没有数据也显示一条计数为0
解决方案
10
做一张时间表,格式和tt的时间字段相同,用来做为主表关联tt
时间表创建可以预计算几十年之后
时间表创建可以预计算几十年之后
10
假如时间间隔相对固定,你可以建立一个从0到N的序号表,查的时候根据开始时间和结束时间算出全部日期,再做关联查询
效率差一些,但基本上不用考虑维护表中数据(只要有足够的数据就行)
效率差一些,但基本上不用考虑维护表中数据(只要有足够的数据就行)