【发布时间】:2019-10-24 18:28:09
【问题描述】:
我有一个 SQL Server 表,其中包含我用来在应用程序中定义用户权限的组和子组。我想要完成的是根据分配给组的已用 id 从所有子组中选择所有用户 id。
我已尝试使用此查询,但它仅显示一级子组用户。
SET @UserIds =
ISNULL(
STUFF((SELECT ',' + CAST(tbl.UserID AS VARCHAR(MAX))
FROM
(SELECT grpUser.UserId AS UserID
FROM dbo.GroupUser grpUser
INNER JOIN (SELECT subGrp.Id, subGrp.GroupName
FROM dbo.Groups grp
INNER JOIN dbo.GroupUser guser ON grp.Id = guser.GroupId
AND guser.UserId = @UserId
INNER JOIN dbo.Groups subGrp ON grp.Id = subGrp.ParentGroupId) tbl ON grpUser.GroupId = tbl.Id) AS tbl
FOR XML PATH('')), 1, 1, ''), '')
我正在努力获取所有子组中的用户 ID。未定义子组的数量。有没有办法在 sql 中做或者我应该把这部分转移到应用程序端?谢谢你的建议。
【问题讨论】:
标签: sql-server tsql