指定时间内每天显示一条数据,即使不存在也显示

MySql 码拜 8年前 (2016-06-04) 977次浏览
测试的表和数据大约是这样的

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的序号表,查的时候根据开始时间和结束时间算出全部日期,再做关联查询
效率差一些,但基本上不用考虑维护表中数据(只要有足够的数据就行)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明指定时间内每天显示一条数据,即使不存在也显示
喜欢 (0)
[1034331897@qq.com]
分享 (0)