2 u011371270 u011371270 于 2016.03.15 23:04 提问

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

是这样子的,我想实现从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月必败。

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

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

2个回答

u011489205
u011489205   2016.03.16 08:10
已采纳

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

u011371270
u011371270 恩,我顺着这个思路完成了。。。
一年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.16 09:05

首先,你第一段给出的数据怎么有月份重复的呢?
其次,我觉得后台构建构建你这个格式的json数据,也是比较容易的啊,直接用代码遍历查询结果,1-12月份的信息,没有的就补齐整缺省值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!