данные вы в настоящее время отслеживания не собирается, чтобы позволить вам выбрать сверху просматривается на прошлой неделе. Он покажет вам верхнее просматриваемое за все время или наиболее просматриваемые элементы, созданные за последнюю неделю. Если что-то было создано две недели назад, но было просмотрено больше всего на прошлой неделе, вы не можете определить, что из данных, которые вы отслеживаете. Один из способов, которым я могу это сделать, - отслеживать количество обращений к каждому элементу контента каждый день недели.
create table daily_hits {
cid integer, -- content id points to the table you already have
dotw smallint, -- 0-6 or similar
hits integer
PRIMARY KEY (cid, dotw)
}
Всякий раз, когда вы увеличить количество попаданий на элементе контента, вы бы также обновить таблицу daily_hits для данного содержания Ид и дня недели. Вам понадобится функция, которая преобразует текущую дату/время в день недели. Для этой цели MySql предоставляет DAYOFWEEK.
Чтобы получить наиболее просматриваемые в последней неделе, вы можете запросить так:
ВЫБРАТЬ чид, SUM (хиты) ОТ daily_hits GROUP BY чид ORDER BY SUM (хиты) DESC
Вам потребуются некоторый тип запланированного задания, который удаляет текущий день недели в полночь, чтобы вы не накапливались навсегда и, по сути, выполняли то же самое, что и в столбце хитов текущей таблицы.
Что такое значение 7 дней назад? –
@Ben Shelock, (теперь значение) - (7 * 24 * 60 * 60). В php это будет время() - (7 * 24 * 60 * 60) – Nathan
Вам нужно рассчитать это. Через PHP вы можете использовать time() - 604800. –