开发者社区> 问答> 正文

在Mysql(或者在js中)构建完整查询结果数组

杨冬芳 2016-07-07 14:37:23 928

是这样子的,我想实现从Mysql中查询结果之后调用给js的highchart画图用
现在我通过mysql的 类似select 数量,月份,状态 from table group by 月份,状态,结果如下:
数量 月份 状态
3 1月 成功
5 1月 失败
3 2月 成功
7 4月 失败
原本我想通过json化之后返回给前台画图。
但很显然,我用highchart画图的时候,需要一整年的数据,即如果某个月份,或者状态没有,这一个数量就必须是0. 而现在我通过类似“data[3].数量“只能获取4月份,失败的数量7,但我实际想调取2月份,失败的值,没有就是0.

现在我的思路是两个,一个是就是在mysql查询的之后直接构建完成完整的表,如下图(实际要一直构建到12月份)
数量 月份 状态
3 1月 成功
5 1月 失败
3 2月 成功
0 2月 失败
0 3月 成功
0 3月 失败
0 4月 成功
7 4月 失败

第二个思路是在js调取数据的时候,新建一个类似数组arr{1月{成功:数量;失败:数量}
2月{成功:数量;失败:数量}},将返回的data补齐,就是data数据中存在一个“1月 成功” 的数据 那我就把他赋值给arr[1月].成功,如果不存在,比如没有‘2月 失败’的数据,那么就给arr[2月].失败 赋值0. 然后一直构建完成到12月必败。

但是这两个思路的具体代码我都想不出来。。有没有哪位大神能给一个思路。。。

或者哪位大神有别的好想法,同样能够实现最终目的的也请请教下。。非常感谢!

JSON JavaScript 关系型数据库 MySQL 数据格式
分享到
取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:52:48

    我比较倾向于您使用第二种方法,设计思想如下:
    1.使用脚本在页面初始化一个以月份为key,{"success":0,"failure":0}为值得这样一个对象的数组,数组长度为12(12个月份的)。其实默认每个月份成功和失败都是0.之后你便可以通过你传来的数据,循环update上面初始化后的数组。用月份的key做匹配的键。如果你需要使用highchart画图的话,还需要对这个数组做符合highchart格式要求的处理。
    2.把这个处理交给应用层做处理,增加一层应用层。

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程