|
|
|
|
|
для: DDK
(01.12.2011 в 19:01)
| | Как вариант, можно предварительно временную таблицу создавать или таблицу типа MEMORY. | |
|
|
|
|
|
|
|
для: cheops
(01.12.2011 в 18:38)
| | Спасибо, cheops!
Да, когда я начал копать эту тему, понял, что она скорее к разделу SQL относится :)
Вот такой запрос у меня получился, дальше уже понятно, как делать другие комбинации:
SELECT FROM_UNIXTIME( `r_date_sold` ) AS human_date, DAYOFMONTH( FROM_UNIXTIME( `r_date_sold` ) ) AS month_number, COUNT( * )
FROM reports
WHERE MONTH( FROM_UNIXTIME( `r_date_sold` ) ) =11
GROUP BY DAYOFMONTH( FROM_UNIXTIME( `r_date_sold` ) )
LIMIT 0 , 30
|
С вспомогательной таблицей идея хорошая, так как если просто испоьзовать вышеприведённый метод, то выпадают дни с нулевым количеством строк. Т.е. выводятся только те дни, которым соответствует хотя бы одна запись.
Но как быть с високосными годами и прочими ньюансами календаря в случае с вспомогательной таблицей? | |
|
|
|
|
|
|
|
для: DDK
(01.12.2011 в 18:19)
| | 1. Проще всего при помощи FROM_UNIXTIME() и DATE_FORMAT() сформировать вычисляемый столбец в удобной вам форме, например, только года или год и месяц или год и неделя и группировать таблицу по этому полю.
2. Еще один подход заключается в объединении таблицы с заранее созданной таблицей временных интервалов, т.е. 365 дней выливаются в таблицу с 365 записями, с которой вы объединяете свою таблицу. | |
|
|
|
|
|
|
| Приветствую!
Есть БД, в ней куча данных, каждая запись имеет поле с датой, хранящейся в формате UNIX-time. Надо выводить статистику в виде графика. График на HTML5 нашёл удобный, строится автоматически на основе таблицы. Вопрос в другом: как лучше организовать выборку информации из базы по датам, группируя её по указанному периоду (по месяцам, неделям, дням). Интересна больше логика, но и конкретному примеру буду рад :)
Вот, допустим, есть у вас таблица заказов, у каждого заказа прописана дата. Как построить график статистики поступления заказов по месяцам, неделям или даже дням? :)
Сейчас я делаю массив, содержащий информацию о начале и конце месяца/недели/дня (в unix-time) и делаю много запросов. Т.е. если в году у нас 54 недели - будет 54 идентичных запроса, отличающихся только временными метками, передаваемыми оператору BETWEEN. Если в году 365 дней - значит 365 запросов... но это же сумасшествие! С индексацией, конечно, нормально... но всё равно это бред какой-то получается :))
P.S. При особой необходимости могу перевести хранение даты в формат SQL DATE.
Спасибо! | |
|
|
|
|