我有3张桌子:
id,name,description
thread_id,forum_id,user_id,title,content,views
post_id,thread_id,author_id,内容,日期
我想要做的是获取论坛中的所有主题,并获取每个主题的帖子数。所以我得到每个线程(WHERE forum_id = what)然后我左键加入表格帖子,以便计算结果。 但有些东西不起作用。这是我的疑问:
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服务器版本对应的手册,以便在第15行的“WHERE t.forum_id = 2”附近使用正确的语法
完整查询:
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语句放在了不应该的地方。它现在已经解决了。
答案 0 :(得分:10)
GROUP BY是正确的方法,所以只需添加:GROUP BY t.thread_id
答案 1 :(得分:0)
您应该添加GROUP BY t.thread_id, u.nick