MySQL - LEFT JOIN и COUNT ()

У меня есть 3 таблицы:

  1. форумы

id, имя, описание

  1. темы

thread_id, forum_id, user_id, title, content, views

  1. posts

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 там, где оно не должно было быть. Теперь она решена.

8
задан Daniel Nugent 13 July 2017 в 19:13
поделиться