Необходимо получить данные из двух таблиц и отсортировать по дате

Есть две таблицы.

Вывести 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. Вероятно вы найдете помощь здесь

→ Ссылка