У меня есть следующие таблицы:MySQL GROUP BY с тремя таблицами
posts (post_id, content, etc)
comments (comment_id, post_id, content, etc)
posts_categories (post_category_id, post_id, category_id)
и этот запрос:
SELECT `p`.*
, COUNT(comments.comment_id) AS cmts
, posts_categories.*
, comments.*
FROM `posts` AS `p`
LEFT JOIN `posts_categories`
ON `p`.post_id = `posts_categories`.post_id
LEFT JOIN `comments`
ON `p`.post_id = `comments`.post_id
GROUP BY `p`.`post_id`
Есть три замечания по POST_ID = 1 и четыре в общей сложности. В posts_categories есть две строки, оба назначенные post_id = 1. У меня есть четыре строки в сообщениях.
Но если я запрошу заявление выше, я получаю результат 6 для COUNT(comments.comment_id)
при post_id = 1. Как это возможно? Я предполагаю, что ошибка находится где-то в предложении GROUP BY, но я не могу понять, где.
Любые предложения?
В mysql не обязательно перечислять все поля в GROUP BY, но затем это приводит к описанным выше проблемам со счетом – Unreason
. Что относительно post_category_id? Вы попробовали запрос. Если вы не понимаете, что я имею в виду, посмотрите на ответ @Adam Bernier. – lexu
Не работает для меня, я ушел из GROUP_CONCAT, чтобы сделать запрос проще. Спасибо в любом случае – Psaniko