我们有两个表SiteRoles
和SiteRolesModules
。在SiteRolesModules中,我们基于RoleID
在单行中访问ModuleID
。
select t1.ModuleID,RoleID=( SELECT RoleID AS [data()]
FROM SiteRoleModules t2
where t2.ModuleID = t1.ModuleID ORDER BY ModuleID FOR XML PATH(''))
from SiteRoleModules t1 GROUP BY ModuleID
在上图中我们得到了输出。我们需要Rolename而不是RoleID。 RoleID和Rolename存在于SiteRoles
表
在上图中,我们有RoleID 1 - administrator, 2 - superAdmin, 3 - admin
我们要求输出图像1而不是RoleID 1 2 3我们需要以管理员的身份输出superAdmin admin
ALTER PROCEDURE [dbo].[MEDEIL_SiteRoleModules_SelectOne]
@ModuleID int
AS
SELECT
SRM.RoleID,
SR.RoleName
FROM
[dbo].[SiteRoleModules] SRM
INNER JOIN [dbo].[SiteRoles] SR
ON SR.RoleID = SRM.RoleID
WHERE ModuleID = 1
答案 0 :(得分:2)
您可以使用join
执行此操作;
select t1.ModuleID,RoleName=( SELECT s1.RoleName AS [data()]
FROM SiteRoleModules t2 inner join SiteRoles s1 ON t2.RoleID = s1.RoleID
where t2.ModuleID = t1.ModuleID group by s1.RoleName FOR XML PATH('')) from SiteRoleModules t1 GROUP BY ModuleID