MySQL - LEFT JOIN和COUNT()

时间:2010-11-13 22:15:51

标签: mysql count left-join

我有3张桌子:

  1. 论坛
  2.   

    id,name,description

    1. 线程
    2.   

      thread_id,forum_id,user_id,title,content,views

      1. 帖子
      2.   

        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语句放在了不应该的地方。它现在已经解决了。

2 个答案:

答案 0 :(得分:10)

GROUP BY是正确的方法,所以只需添加:GROUP BY t.thread_id

答案 1 :(得分:0)

您应该添加GROUP BY t.thread_id, u.nick

相关问题