我使用过这个chart库,但我不知道如何将数据加载到它中。我从未将数据从mysql加载到图表。所以我不知道什么是最佳做法...
所以我在MySQL表中订购了如下行:
id | price | kind | orderdate
-----------------------------
1 | 35 | 2 | 2013-01-01
2 | 30 | 1 | 2013-01-01
3 | 25 | 3 | 2013-01-01
4 | 15 | 2 | 2013-01-01
更多c3js加载数据的格式如下:
columns: [
['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05'],
['kind1', 30, 200, 100, 400, 150],
['kind2', 30, 200, 100, 400, 150],
['kind3', 30, 200, 100, 400, 150],
]
所以我创建了日期数组,如下面['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05']
,我需要每个这个日期,例如kind = 1的行数。
但我不知道MySQL查询必须如何......我需要查询日期数组中的每个日期吗?
或者有更好的方法吗?
感谢您的帮助!
答案 0 :(得分:0)
首先,您需要从服务器上的表中提取数据,并在浏览器中将其转换为javascript。该怎么做取决于你使用的是什么,例如PHP,但查询可能是这样的:
select orderdate, kind, sum(price) as total
from #orders
where orderdate between '1 Jan 2013' and '10 jan 2013'
group by orderdate, kind
我的偏好是通过JSON API公开数据,因此您可以使用以下格式从网址(以&到日期为参数)获取数据:
[
{'orderdate':'2013-01-01', 'kind': 1, 'total': 30},
{'orderdate':'2013-01-01', 'kind': 2, 'total': 50},
{'orderdate':'2013-01-01', 'kind': 3, 'total': 25},
{'orderdate':'2013-01-02', 'kind': 1, 'total': 30},
{'orderdate':'2013-01-02', 'kind': 2, 'total': 20},
{'orderdate':'2013-01-02', 'kind': 3, 'total': 23}
]
然后将数据“转置”到您需要的列中:
['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05'],
['kind1', 30, 200, 100, 400, 150],
['kind2', 30, 200, 100, 400, 150],
['kind3', 30, 200, 100, 400, 150],
第一栏是直截了当的,因为你有来自&到了约会。
要构建第2,3,4行,假设您知道种类列表:
for each kind:
create an array, eg: var data = ['kind1'];
initialise a sum variable, eg: var sum = 0;
for each date (in the correct order):
loop through the array, if the date & the kind match, add to the sum variable
add the sum to the array, eg: data.push(sum);
应该这样做吗?