У меня есть 3 таблицы:
id, имя, описание
thread_id, forum_id, user_id, title, content, views
post_id, thread_id, author_id, content, date
Я хочу получить все темы форума, и получите количество сообщений в каждой теме. Итак, я получаю каждую ветку (WHERE forum_id = something), а затем ОСТАВЛЯЮ СОЕДИНЯТЬСЯ с сообщениями в таблице, чтобы подсчитать результаты. Но что-то не получается. Вот мой запрос:
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 ...
Как я могу решить эту проблему?
----------- EDIT: Я попытался добавить 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:
Плохо, я поставил ГРУППУ Заявление BY там, где оно не должно было быть. Теперь она решена.