2017-12-07 9 views
-1

我々は2つのテーブルSiteRolesSiteRolesModulesを持っています。 SiteRolesModulesでは、ModuleIDに基づいて1行でRoleIDにアクセスします。クエリからグループからRolenameにアクセスする方法は?

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

は、上記の画像では、出力を得ました。 RoleIDではなくRolenameが必要でした。 RoleIDとロール名は、我々は、画像1の代わりにRoleID 1 2 3で出力を必要とする我々は、管理者スーパー・ユーザ管理などの出力を必要RoleID 1 - administrator, 2 - superAdmin, 3 - admin

我々は

上記画像におけるid

SiteRolesテーブルに存在する

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

、対応するロール名の値が表示されるはずですが、ここで私は値1を渡すの画像を削除し、私はModuleIDは値1を渡します場合は、それを – Wanderer

+0

fomatテキスト内のサンプル・テーブル・データと予想される出力を追加ModuleIDにはすべてのModuleIDが表示されます。私のクエリを変更する方法。 –

答えて

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 
+0

作業罰金先生 –

+0

をチェック@Wanderer –

+0

https://i.stack.imgur.com/EYNYE.png –

関連する問題