Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL计数父项和子项_Mysql - Fatal编程技术网

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)
;