У меня есть 3 таблицы:
- форумы
идентификатор, имя, описание
Темы
Идентификатор темы, идентификатор_форума, идентификатор_пользователя, заголовок, содержимое, просмотры
posts
post_id, thread_id, author_id, content, date
Что я хочу сделать, это получить все темы на форуме, иполучить количество сообщений каждой темы.Таким образом, я получаю каждую ветку (WHERE forum_id = что угодно), а затем оставляю сообщения в таблице, чтобы подсчитать результаты.Но что-то не работает.Вот мой запрос:
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
WHERE
t.forum_id = $this->forumID
Этот запрос покажет только (я думаю) темы, в которых есть какие-либо сообщения.Я также пытался использовать оператор GROUP BY, но он вызывает ошибку MySQL ...
Как я могу решить эту проблему?
----------- РЕДАКТИРОВАТЬ: Я попытался добавить GROUP BY t.thread_id, однако, как я уже говорил, ошибки MySQL:
В синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'WHERE t.forum_id = 2' в строке 15
Полный запрос:
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
GROUP BY
t.thread_id
WHERE
t.forum_id = $this->forumID
РЕДАКТИРОВАНИЕ2:
Плохо, я поместил утверждение GROUP BY там, где его не должно было быть.Теперь решено.