gpt4 book ai didi

sql-server - 具有附加 EXISTS 条件的递归 CTE?

转载 作者:行者123 更新时间:2023-12-04 01:35:24 24 4
gpt4 key购买 nike

我有一种情况需要能够查看给定人员是否在用户/经理层次结构中。我有下一个表结构:用户身份用户名ManagerId

我有 2 个 ID:一些 UserId(比如 5)和 ManagerId(比如 2)。因此,我需要知 Prop 有给定 ID (2) 的经理是否是具有给定 ID (5) 的用户的主管?例如,如果

  1. 用户 1 向用户 2 报告。
  2. 用户 3 向用户 1 报告。
  3. 用户 4 向用户 3 报告

结果 SQL 查询必须显示 UserId = 4 和 ManagerId = 1 答案为真。

我刚刚创建了获取所有层次结构的查询:

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

但现在我不知道如何使用上述条件获取结果查询:(

在此先感谢您的帮助!

最佳答案

在 anchor 中找到用户,然后沿着层次结构往回走。检查您在针对管理器的递归查询中获得的行。

这将返回经理行(如果存在的话)。

WITH temp AS
(
SELECT EmployeeName, EmployeeId, BossId
FROM Employees
WHERE EmployeeId = @UserID

UNION ALL

SELECT E.EmployeeName, E.EmployeeId, E.BossId
FROM Employees AS E
inner join temp AS T
ON E.EmployeeId = T.BossId
)

SELECT *
FROM temp
WHERE EmployeeId = @ManagerID

关于sql-server - 具有附加 EXISTS 条件的递归 CTE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com