在ON子句中使用可选值的Mysql多连接

时间:2013-06-16 23:37:52

标签: mysql left-join

好的,首先看一下http://www.sqlfiddle.com/#!2/bbc3a/2

这里查询返回计数和所有,但我想要的是它选择一个论坛并返回主题的数量,然后在其中发布下一个论坛以及所有主题和帖子计数等等论坛名称, url和desc。我认为在一个查询中执行此操作而不是循环中的许多查询会更好。我不知道我在用mysql查询做什么,我对mysql不是很好,我已经睡了这么久了。谢谢你的帮助。

编辑:

这是我期望从上面提供的数据中看到的^

| FORUMNAME | FORUMURL |    FORUMDESC | FORUMTIME | TOPICCOUNT | POSTCOUNT |
|   Forum 1 |  Forum-1 | Forum 1 Desc | 343243243 |          1 |         1 |
|   Forum 2 |  Forum-2 | Forum 2 Desc | 343243243 |          0 |         0 |

1 个答案:

答案 0 :(得分:2)

您只需添加GROUP BY子句

即可
SELECT f.Name      ForumName,  
       f.Url       ForumUrl, 
       f.Desc      ForumDesc, 
       f.Time      ForumTime,
       COUNT(DISTINCT t.ID) TopicCount, 
       COUNT(DISTINCT p.ID) PostCount 
  FROM name_forums f
  LEFT JOIN name_topics t ON t.ForumId = f.ID
  LEFT JOIN name_posts p  ON p.TopicId = t.ID
 WHERE f.CategoryId = 1 
 GROUP BY f.name, f.url, f.desc

这是 SQLFiddle 演示