У меня есть дело, чтобы создать список воспроизведения подкаста на основе сортировки по категориям. Например, я хочу объединить данные подкаста и данные категории на основе приведенной ниже таблицы.
> SELECT * FROM category_sorts;
+----+-------------+------+
| id | category_id | sort |
+----+-------------+------+
| 1 | 2 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 4 |
+----+-------------+------+
Столбец category_id
относится к таблице категорий.
> SELECT * FROM categories;
+----+--------------+-----------+
| id | title | status |
+----+--------------+-----------+
| 1 | Saga | published |
| 2 | Asia Calling | published |
+----+--------------+-----------+
А вот некоторые примеры данных из таблицы podcasts
со связанной категорией.
> SELECT * FROM podcasts;
+----+-------------+------------------------+---------------------+
| id | category_id | title | published_at |
+----+-------------+------------------------+---------------------+
| 1 | 1 | Sejarah Rumah Dengklok | 2018-05-01 22:40:47 |
| 3 | 2 | Berita Asia! | 2018-05-01 22:52:15 |
| 4 | 2 | Asia Later! | 2018-05-01 23:47:13 |
| 5 | 1 | Saga terbaru | 2018-05-02 00:06:32 |
+----+-------------+------------------------+---------------------+
Используя приведенный ниже запрос, я получил дубликаты подкастов в той же категории.
SELECT
p.id, p.title AS podcast_title, p.published_at,
c.title AS category_title,
cs.sort
FROM podcasts as p
INNER JOIN categories as c ON c.id = p.category_id
INNER JOIN category_sorts AS cs on cs.category_id = c.id
GROUP BY cs.sort
ORDER BY cs.sort ASC, p.published_at DESC
Результаты:
+----+------------------------+---------------------+----------------+------+
| id | podcast_title | published_at | category_title | sort |
+----+------------------------+---------------------+----------------+------+
| 3 | Berita Asia! | 2018-05-01 22:52:15 | Asia Calling | 1 |
| 1 | Sejarah Rumah Dengklok | 2018-05-01 22:40:47 | Saga | 2 |
| 1 | Sejarah Rumah Dengklok | 2018-05-01 22:40:47 | Saga | 3 |
| 3 | Berita Asia! | 2018-05-01 22:52:15 | Asia Calling | 4 |
+----+------------------------+---------------------+----------------+------+
Что я ожидаю?
Я хочу заказать список воспроизведения на основе столбца sort
и последних подкастов, указанных в столбце published_at
. Заказ по столбцу sort
в порядке, но я не могу заказать его по дате published_at
из подкастов.
Ожидаемые результаты:
+----+------------------------+---------------------+----------------+------+
| id | podcast_title | published_at | category_title | sort |
+----+------------------------+---------------------+----------------+------+
| 4 | Asia Later! | 2018-05-01 22:52:15 | Asia Calling | 1 |
| 5 | Saga Terbaru | 2018-05-01 22:40:47 | Saga | 2 |
| 1 | Sejarah Rumah Dengklok | 2018-05-01 22:40:47 | Saga | 3 |
| 3 | Berita Asia! | 2018-05-01 22:52:15 | Asia Calling | 4 |
+----+------------------------+---------------------+----------------+------+
Может кто-нибудь дать мне подсказку, как это сделать? Любая ссылка или источник будут оценены.
Вот пример полной структуры таблицы и данных из SQL Fiddle, если вы хотите поиграть с ней.
Спасибо.