0

このフィールドを持つ単純なテーブル「Employees」があります。

ID, ParentID, Name

従業員にはマネージャーがいない可能性があるため、ParentID は Nullable です。このテーブルには、それ自体と 1 対多の関係があります。

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;

テーブルから他の 2 つの列を追加し、count 列の名前を 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 に答える