Задать вопрос
Kianl
@Kianl
Печальный веб-разработчик

Сортировка по просмотрам за день / неделю / месяц — как построить запрос?

Привет, ребята.

Нужно сделать сортировку постов Wordpress по просмотрам за 24 часа, 7 дней, 30 дней.

Дано:
  • Таблица постов WP
  • Таблица wp_post_views с двумя полями: ID (ID поста) и time (хранит дату и время просмотра)


Собственно надо построить запрос SQL, который отсортирует посты из таблицы wp_posts по количеству строк с ID поста в таблице wp_post_views за нужный период.

Есть идеи, как это можно провернуть? Пытался делать через JOIN, GROUP BY и COUNT. Ничего не получилось у меня... В SQL я полный профан.
Заранее спасибо :)

Нашел такое решение:
SELECT `ID`, `post_title` FROM `wp_posts` AS t1
INNER JOIN `wp_post_views` AS t2 USING(`ID`)
WHERE t2.time >= CURDATE() - INTERVAL 30 DAY /* или 1 DAY, или 7 DAY*/
GROUP BY `ID`
ORDER BY COUNT(t2.ID) DESC 
LIMIT 10


Результат выполнения:
5db2ab89712a3064959787.png
Вроде бы работает, но это не точно... Мб кому пригодится :)
  • Вопрос задан
  • 386 просмотров
Подписаться 2 Средний 1 комментарий
Ответ пользователя tisprk К ответам на вопрос (2)
@tisprk
Проверить негде. Рискну предположить следующее:

--24 часа
select * from wp_posts wp
inner join wp_post_views wv on wp.id = wv.id
where time > DATE_SUB(CURDATE(), INTERVAL 24 HOUR);

-- 7 дней
select * from wp_posts wp
inner join wp_post_views wv on wp.id = wv.id
where time > DATE_SUB(CURDATE(), INTERVAL 168 HOUR);

-- 30 дней
select * from wp_posts wp
inner join wp_post_views wv on wp.id = wv.id
where time > DATE_SUB(CURDATE(), INTERVAL 720 HOUR);
Ответ написан
Комментировать