2010-02-03 57 views
5

我有一個數據庫與以下兩個表,用戶,POSTS 我正在尋找一種方法來獲得用戶有多少帖子的計數。MySQL查找每個用戶的帖子總數

Users   Posts 
+----+------+ +----+---------+-----------+ 
| ID | Name | | ID | user_id | Name  | 
+----+------+ +----+---------+-----------+ 
| 1 | Bob | | 1 | 1  | Blargg... | 
+----+------+ +----+---------+-----------+ 
| 2 | Jim | | 2 | 1  | Blargg... | 
+----+------+ +----+---------+-----------+ 
| 3 | Jo | | 3 | 2  | Blargg... | 
+----+------+ +----+---------+-----------+ 

我試過以下SQL命令的許多變體,沒有任何成功。而不是顯示單個用戶的帖子數量,它顯示單個行,所有帖子都作爲計數。

SELECT users.* , COUNT(Posts.user_id) 
FROM users 
LEFT JOIN Posts ON users.id = Posts.user_id 

最後,我想是這樣的

+----+------+ 
| ID | Count| 
+----+------+ 
| 1 | 2 | 
+----+------+ 
| 2 | 1 | 
+----+------+ 

回答

6

想通了。 之嫌自己的頭部

SELECT users.*, count(posts.user_id) 
FROM posts LEFT JOIN users ON users.id=posts.user_id 
GROUP BY posts.user_id 
1
select users.*, count(posts.user_id) 

from users, posts 
where users.user_id = posts.user_id 
group by posts.user_id 

但最好的方式是現場太添加到用戶表,並保持每個用戶的發帖量,並且每當創建或刪除一個帖子更新它。否則,當數據量變大時,你的數據庫會變慢。

+1

如果沒有關聯加入......您將排除所有沒有帖子的用戶。 – 2010-02-03 23:56:58

相關問題