我有3个表:MySQL的 - 左连接和COUNT()
- 论坛
ID,名称,描述
- 的主题
- 帖子
的thread_id,forum_id,USER_ID,标题,内容,视图
POST_ID,的thread_id,AUTHOR_ID,内容,日期
我想要做的是获得论坛中的所有主题,并获得每个主题的帖子数。所以我得到每一个线程(WHERE forum_id = whatever),然后我左连接表格的帖子,以便计算结果。 但有些不起作用。这是我的查询:
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声明放在了它不适合的地方。现在已经解决了。