0

我有一个包含以下字段的简单表“员工”:

ID, ParentID, Name

ParentID 为 Nullable,因为员工可能没有经理。此表与自身具有一对多关系:

ID --one--to--many--> ParentID

现在我想要一个返回这些列的查询:

名称,其 ParentID 等于当前行 ID 的行数(该行是该行的管理器)

样品表:

ID | ParentID | Name
======================
 1 |     0    | John
----------------------
 2 |     1    | Bob
----------------------
 3 |     1    | Alice
----------------------
 4 |     3    | Jack

这样我可以找到一个员工是多少其他员工的经理。结果应该是这样的:

Name  | Count of Employees
==========================
John  |   2
--------------
Bob   |   0
--------------
Alice |   1
--------------
Jack  |   0

如何在 MS ACCESS 2007 中实现这一点?* 我尝试过内置查询生成器,但没有成功。

4

2 回答 2

1

所以你只想计算一个经理有多少员工?

您将不得不将表连接到自身。它可以在查询生成器中完成,但 SQL 语句将更容易放在这里。

SELECT [Employees].Name, [Employees].ParentID, [Employees].Name, Count([Employees1].ParentID) AS NoOfEmployees
FROM [Employees] LEFT JOIN [Employees] AS [Employees1] ON [Employees].ID = [Employees1].ParentID
GROUP BY [Employees].ID, [Employees].ParentID, [Employees].Name;

我从表中添加了另外两个列,并将计数列重命名为 NoOfEmployees。

于 2012-08-29T21:21:22.673 回答
0

你的意思是:

 SELECT t1.ID, t2.ParentID 
 FROM Employees t1 
 LEFT JOIN Employees t2
 ON t1.ID = t2.ParentID

数数你会说

 SELECT t1.ID, Count(t2.ParentID)
 FROM Employees t1 
 LEFT JOIN Employees t2
 ON t1.ID = t2.ParentID
 GROUP BY t1.ID
于 2012-08-29T21:16:44.050 回答