Необходимо получить данные из двух таблиц и отсортировать по дате
Есть две таблицы.
Вывести 3 записи за последнюю неделю содержащих поле poster в порядке от самого популярного.
Первая таблица anime_release:
| id | poster |
---------------------
| 1 | url_картинки |
| 2 | url_картинки |
| 3 | url_картинки |
Вторая таблица anime_populate содержащую id пользователя, id релиза и дату:
| id | anime_id | watcher_id | date |
-------------------------------------------
| 1 | 1 | 1 | 2020-03-26 |
| 2 | 1 | 2 | 2020-04-05 |
| 3 | 3 | 2 | 2020-04-05 |
| 4 | 1 | 2 | 2020-04-05 |
Ответы (1 шт):
Автор решения: svmitin
→ Ссылка
Проверял код в PostgreSQL, доступа к MySQL не имею, так-что возможно код немного некорректен, но в целом все верно
SELECT count(p.anime_id) as wathed, p.date, r.poster
FROM anime_populate as p
INNER JOIN anime_release as r ON p.anime_id = r.id
GROUP BY p.date, r.poster
ORDER BY wathed DESC
LIMIT 3
- watcher_id ломает логику, по этому в выборку он не попал, в условиях его тоже не было
- Количество просмотров отображается как wathed
За ТОП-3 отвечает 'LIMIT 3', в MySQL это будет 'TOP 3':
SELECT TOP 10 * FROM tabДля вывода записей за последнюю неделю нужно из сегодняшней даты, вычесть интервал в одну неделю. Это можно сделать с помощью функции TIMESTAMPDIFF() в MySQL. Вероятно вы найдете помощь здесь