Mysql 查找每个父项的子项总数

Mysql 查找每个父项的子项总数,mysql,Mysql,我试图找出每个经理在一个组织内有多少份报告,但无法完全让它为我工作 下面是一个示例数据集-这都在一个表中,每行都有一个管理器,但第一个管理器位于树的顶部: ID Manager 1 NULL 2 1 3 2 4 3 5 3 6 5 7 5 8 5 9 5 10 3 我需要的结果是: Manager Count 1 1 2 1 3 3 5 4 这是我目前所拥有的,但它并没有给我我所需要的: sel

我试图找出每个经理在一个组织内有多少份报告,但无法完全让它为我工作

下面是一个示例数据集-这都在一个表中,每行都有一个管理器,但第一个管理器位于树的顶部:

ID  Manager
1   NULL
2   1
3   2
4   3
5   3
6   5
7   5
8   5
9   5
10  3
我需要的结果是:

Manager  Count
1        1
2        1
3        3
5        4
这是我目前所拥有的,但它并没有给我我所需要的:

select e1.manager, count(e3.id) as emp_count
  from employee as e2
left outer
  join employee as e1
    on e1.manager = e2.id
left outer
  join employee as e3
    on e3.manager = e1.id
group
    by e1.manager

为什么有这么多外部连接

select e1.manager, count(e1.id) as emp_count
from employee as e1
where e1.manager is not null
group by e1.manager

从你提供的数据来看,你的问题与“父母和孩子”无关。这是一个非常简单的集合。如果不是这样,请用更好的样本数据更新您的问题。

我认为问题很简单:

select manager, count(manager)
from employee
where manager is not null
group by manager

你打错了<代码>计数(管理器)按管理器分组时,每次的计数为1。:)它在T-SQL中工作,但你是对的,问题在MySQL中,所以答案可能不同。然而,我仍然会感到惊讶,因为结果是按经理分组的。如果按经理分组,则每个组有一个经理。计数是按组计算的。因此,每组一名经理的数量等于一名。我将确保远离T-SQL,以避免任何奇怪的疯狂行为导致任何其他后果。:)我举了一个我在网上找到的例子,并试图根据我的要求修改它-父/子可能不是定义这一点的正确方式,但我认为每个经理都是父,他们的报告都是子。无论哪种方式,这都是一种享受,所以谢谢你,正如你所知道的,当我们说“父母/孩子”时,我们通常指的是嵌套关系,例如经理有经理的经理。