特定の人物がユーザー/マネージャー階層内にあるかどうかを確認できる必要がある状況があります。私はテーブルの次の構造を持っています: UserId UserName ManagerId
UserId (たとえば 5) と ManagerId (たとえば 2) の 2 つの ID があります。その結果、指定された ID (2) を持つマネージャーが、指定された ID (5) を持つユーザーのチーフであるかどうかを知る必要がありますか? たとえば、
- ユーザー 1 はユーザー 2 に報告します。
- ユーザー 3 はユーザー 1 に報告します。
- ユーザー 4 はユーザー 3 にレポートします
結果の SQL クエリは、UserId = 4 および ManagerId = 1 の回答が true であることを示す必要があります。
すべての階層を取得するためのクエリを作成しました。
WITH temp (level, UserName, UserId, ManagerId) AS
(
SELECT 1 AS level, EmployeeName, EmployeeId, BossId
FROM Employees
WHERE BossId IS NULL
UNION ALL
SELECT level+1 AS level, EmployeeName, EmployeeId, BossId
FROM Employees, temp
WHERE BossId = UserId
)
SELECT t.* from temp AS t
しかし、今では上記の条件で結果クエリを取得する方法がわかりません:(
助けてくれてありがとう!