1

mysqlの結果を日付で並べ替え、日付とIDでグループ化しました。

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

私に言わせれば、それはハイチャートでグラフを作成するためにそれを使用するための正しい結果セットです。しかし、私は次の問題に取り組みます。

ハイチャートに適切な結果を作成する方法がわかりません。結果は次のようになります。

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 に答える