Kompot
Новичок
Здравствуйте. Такая проблема.
Есть таблица со статьями - article
Есть таблица с комментариями - comments
Есть таблица с тегами - tags и промежуточная таблица между article и tags - articles_tags
Задача: запрос на вывод статей с количеством комментариев и тегами.
Проблема:
Следующий запрос ->
SELECT DISTINCT articles.*, COUNT(comments.id) AS comment_count
FROM articles
LEFT JOIN comments ON articles.id = comments.article_id
LEFT JOIN articles_tags ON articles.id = articles_tags.article_id
LEFT JOIN tags ON articles_tags.tag_id = tags.id
GROUP BY articles.id
<- не может правильно сосчитать количество комментариев. Причем косячит с интересной деталью - если тегов 0 или 1 - все правильно считает. Если тегов Х (где Х >1), то количество комментариев будет равно реальное ко-во комментариев * Х. Я так понимаю, что на каждый тег создается свой дубль записи и COUNT проходится по всем ним и суммирует количество комментов у дубля.
Как правильно переписать запрос? Заранее спасибо за помощь.
Есть таблица со статьями - article
Есть таблица с комментариями - comments
Есть таблица с тегами - tags и промежуточная таблица между article и tags - articles_tags
Задача: запрос на вывод статей с количеством комментариев и тегами.
Проблема:
Следующий запрос ->
SELECT DISTINCT articles.*, COUNT(comments.id) AS comment_count
FROM articles
LEFT JOIN comments ON articles.id = comments.article_id
LEFT JOIN articles_tags ON articles.id = articles_tags.article_id
LEFT JOIN tags ON articles_tags.tag_id = tags.id
GROUP BY articles.id
<- не может правильно сосчитать количество комментариев. Причем косячит с интересной деталью - если тегов 0 или 1 - все правильно считает. Если тегов Х (где Х >1), то количество комментариев будет равно реальное ко-во комментариев * Х. Я так понимаю, что на каждый тег создается свой дубль записи и COUNT проходится по всем ним и суммирует количество комментов у дубля.
Как правильно переписать запрос? Заранее спасибо за помощь.