Я получил 3 таблицы:
- элементов (item_id, метка времени)
- items_terms (item_id, term_id)
- терминов (term_id, term_name)
Мне нужно найти 5 самых последних терминов (term_id, term_name) на основе метки времени элемента. Я пытался решить это так:
SELECT t.term_id, t.term_name
FROM items i
INNER JOIN items_terms it USING(item_id)
INNER JOIN terms t USING (term_id)
GROUP BY t.term_id
ORDER BY i.timestamp DESC
LIMIT 5
Но проблема в том, что MySQL сначала сгруппирует элементы (это займет первый term_id) и игнорирует ORDER BY ..
Я также думал о фильтрации на стороне PHP путем удаления GROUP BY и выбора более 5 элементов, но этот запрос должен поддерживать разбиение на страницы без дубликатов на последовательных страницах.
Буду рад любым предложениям.