MySQL计数父项和子项
我正在尝试进行一个查询,以获得有多少用户MySQL计数父项和子项,mysql,Mysql,我正在尝试进行一个查询,以获得有多少用户用户和多少文档,我期望的结果是这个 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.
用户
和多少文档
,我期望的结果是这个
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
...
它给出的不是用户和文档的总数,而是每个用户的文档总数
我相信这很容易做到,这是一个简单的查询,但我今天完全被阻止了
表的结构非常简单
用户
id、用户名、密码、电子邮件
文档
id、标题、正文、用户id、创建时间、更新时间
关系是document.user\u id
到user.id
,并不复杂。
请参见此处的演示:您预期结果的来源是什么。您指的是用户和文档的表结构?结果是:297个用户有0个文档,5个用户有1个文档。。。。是吗?是的,这就是我想要的。表结构和样本数据。这是一些调整,但我得到了一些奇怪的东西,我尝试了3000个用户和3000个文档,只有1个用户有2个文档,其余的有1个,所以结果应该是“2999-1”和“1-2”,但它说“2998-1”和“1-2”,进行
选择计数(不同的用户id)
到文档
表格,上面写着2999所以。。。DunnoI刚刚添加了完整的查询,请参见sqlfiddle。好吧,愚蠢的我,我在做一个内部连接,这就是为什么我得到了2998而不是2999,因为有1个用户拥有0个文档:P谢谢!ç
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)
;