我尝试进行查询以获得有多少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_id
到user.id
,没有什么复杂的。
答案 0 :(得分:2)
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