如何通过查询从组中访问Rolename?

时间:2017-12-07 07:24:44

标签: c# mysql sql asp.net sql-server

我们有两个表SiteRolesSiteRolesModules。在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

output

在上图中我们得到了输出。我们需要Rolename而不是RoleID。 RoleID和Rolename存在于SiteRoles

id

在上图中,我们有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

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