Запрос mySQL для отображения количества комментариев, которые мой сайт получал каждый день?

Я веду онлайн-журнал и хотел бы очень простой способ отслеживать 3 показателя:

  1. Сколько комментариев оставляют каждый день.
  2. Сколько ссылок отправляют мои пользователи.
  3. Сколько новых участников я получаю каждый день.

Эта информация - вся моя база данных, я просто не знаю, как ее получить.

У меня есть таблица комментариев с примерно 3500 комментариями. Каждый комментарий получает строку в таблице. Один из столбцов в таблице — «отметка времени».

Я предполагаю, что есть запрос, который выберет эту таблицу, отсортирует строки по отметке времени, сгруппирует их с шагом в 24 часа, а затем подсчитает количество строк в каждой группе, сообщая мне, сколько новых комментариев я получил каждый день.

Как будет выглядеть этот запрос? Я думаю, что смогу понять другие, если у меня будет работать первый.


person Community    schedule 30.03.2009    source источник
comment
Какого типа столбец метки времени? Это фактическая TIMESTAMP, какая-то DATE/DATETIME или это INT, хранящий временную метку unix?   -  person Powerlord    schedule 30.03.2009
comment
Это int(11), содержащий временную метку Unix.   -  person FGM    schedule 30.03.2009


Ответы (2)


Этот фрагмент отобразит ваши результаты в тематической таблице:

$sq = 'SELECT COUNT(*) cnt, DATE(FROM_UNIXTIME(timestamp)) day '
    . 'FROM {comments} c '
    . 'GROUP BY 2 '
    . 'ORDER BY 2 DESC';
$q = db_query($sq);
$stats = array();
while ($o = db_fetch_object($q)) {
  $stats[$o->day] = array($o->day, $o->cnt);
}
return theme('table', NULL, $stats));

Использование DATE(timestamp) не работает, потому что comments.timestamp имеет формат UNIX_TIMESTAMP, тогда как DATE() ожидает дату ASCII.

person FGM    schedule 30.03.2009

Используйте функцию date_format() для форматирования дат;

select count(id) as commentCount, date_format(dateColumn, '%Y-%m-%d') as commentDate
from yourTable
group by commentDate
person Björn    schedule 30.03.2009