MySQL计数父和子

时间:2015-01-31 21:57:09

标签: mysql

我尝试进行查询以获得有多少Users用户Documents,我期待的结果就是这个

Users     Documents
297       0
5         1
10        3
16        8

因此,我可以看到我的用户的活动,并了解为什么有这么多用户没有在其他进程中上传文件。

我已尝试过此查询

SELECT COUNT(u.id) AS Users, COUNT(d.id) AS Documents
FROM user u
INNER JOIN document d ON u.id = d.user_id
GROUP BY u.id

我得到的结果是这样的

Users     Documents
1         2
1         1
1         0
1         1
1         1
...

它不是获取用户和文档的总数,而是为每个用户提供了总计的文档...

我确信这可以轻松完成,这是一个简单的查询,但我今天完全被阻止了。

表结构是theese

用户 id, username, password, email

文档 id, title, body, user_id, created_at, updated_at

关系是document.user_iduser.id,没有什么复杂的。

1 个答案:

答案 0 :(得分:2)

sqlfiddle

select count(t.userId) Users, t.numberOfDocs Documents from (
  select u.id userId, count(d.id) numberOfDocs
  from user u 
  left join document d on d.user_id = u.id
  group by u.id ) as t
group by t.numberOfDocs
-- order by users or number of documents (Depends on your requirements)
;

在此处查看演示:sqlfiddle