Графические данные из MySQL - PullRequest
1 голос
/ 11 апреля 2011

У меня есть результат mysql, отсортированный по дате и сгруппированный по дате и идентификатору.

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

Если вы спросите меня, это правильный набор результатов для использования его для построения графика с высокими диаграммами.Но я в следующую проблему.

Я не могу понять, как создать правильный результат для старших графиков.Результат должен выглядеть примерно так:

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

Все это будет запрограммировано в PHP и выведено echo'd для распечатки допустимого JavaScript.Что я делаю?Должен ли я сначала просмотреть все даты и проверить, является ли эта дата действительным результатом?Или я сначала проверяю все учетные записи и проверяю правильную дату.

Есть предложения?

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Мне было намного проще заставить 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.

0 голосов
/ 11 апреля 2011

Так что в основном у вас будет ось 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/

Надеюсь, это поможет.

0 голосов
/ 11 апреля 2011

group by account_id будет считать все вместе по счету

Обновление:

group by date, account_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...