1

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

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

结果是这样的:

日期、计数、account_id
2011-03-23、2、1
2011-03-23、1、6
2011-04-25、1、1
2011-04-26、5、6

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

我无法弄清楚如何为 highcharts 创建正确的结果。结果必须看起来像这样:

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

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

有什么建议么?

提前致谢!

4

3 回答 3

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

由于您的查询已经在执行 CSV 文件,因此只需按照 #2 的示例进行操作。

于 2011-04-15T13:29:55.463 回答
0

group by account_id将按帐户计算所有内容

更新:

group by date, account_id

于 2011-04-11T08:52:35.787 回答
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/

希望有帮助。

于 2011-04-11T09:22:09.120 回答