Столкнулся с проблемой дублирования полей при использовании LEFT JOIN в MySQL запросе.
SELECT topics.topic_id, topics.topic_subject, topics.topic_by, topics.topic_date, topics.topic_views
FROM topics
LEFT JOIN categories
ON topics.topic_cat = categories.cat_id
LEFT JOIN posts
ON topics.topic_id = posts.post_topic
WHERE categories.cat_id = 1
ORDER BY posts.post_date DESC;
По идее, данный запрос должен выводить топики с сортировкой по последнему по времени посту в них. Он их выводит, но дублирует в зависимости от количества постов внутри топиков. Искал готовое решение, смотрел GROUP BY, но не понял как применить это в данном случае :<
Как решить эту проблему?
Проблема решена. Спасибо @Mike
В group by указывайте все поля, которые выбираете в select, а в order by берите max(posts.post_date) вам же надо отсортировать по дате самого последнего поста ? И таблица categories в запросе вообще не нужна, в where спокойно можно проверять topics.topic_cat=1
Сборка персонального компьютера от Artline: умный выбор для современных пользователей