从mysql图形化数据

时间:2011-04-11 08:49:18

标签: php javascript mysql highcharts

我有一个按日期排序的mysql结果,按日期和ID分组。

SELECT
  DATE(`created_at`) AS `date`,
  COUNT(`id`) AS `count`,
  `account_id`
FROM `streamaccounts`
GROUP BY `date`, `account_id`
ORDER BY `date`;

结果如下:

  

date,count,account_id
  2011-03-23,2,1   2011-03-23,1,6   2011-04-25,1,1   2011-04-26,5,6

如果你问我,这是使用它制作带有高图的图形的正确结果集。 但我陷入了以下问题。

我无法弄清楚如何为highcharts创建正确的结果。 结果必须如下所示:

series: [{name: 'account1', data: [2, 1]}, {name: 'account2', data: [1, 5}]

它将全部用PHP编程并回显出来打印出有效的javascript。 我该怎么办?我是否需要先遍历所有日期并检查该日期是否有效?或者我首先遍历所有帐户并检查有效日期。

有什么建议吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

通过将数据转换为以下格式之一,让我更容易让Highchart从SQL查询中完成数据处理工作:

  1. 转换HTML表格(这有助于达到辅助功能标准)演示:http://www.highcharts.com/studies/table-parser.htm
  2. 使用AJAX,读入CSV文件 - 演示此处:http://www.highcharts.com/studies/data-from-csv.htm
  3. 由于您的查询已在执行CSV文件,因此请按照#2的示例进行操作。

答案 1 :(得分:0)

group by account_id会根据帐户计算所有内容

更新

group by date, account_id

答案 2 :(得分:0)

所以基本上你会有一个由日期组成的X轴, 并且Y轴将包括每个帐户的计数。

最简单的方法是通过数据的公共轴生成此数据,在本例中为日期。 因此,您需要遍历图表所需时间范围内的日期, 并将计数映射到那些日子。结束可能如下所示的数据集:

series : [
{name: 'ac1', data: [0,1,5,0,0,0,0,2,3]}, 
{name: 'ac2', data: [0,0,2,1,0,1,0,0,0]}
]

以这样的示例结束:http://jsfiddle.net/55dvF/4/

希望有所帮助。