2017-02-06 14 views
1

ここに私のSQLの問題があります。
ユーザー表:セットが別のセットのサブセットであるかどうかをチェックする方法

[UserID] [Access] 
Abe  A 
Abe  B 
Brad  C 
Cathy  A 

役割ルックアップテーブル:私は2つのテーブルを持っている

私は、ユーザーが役割のすべてのアクセスを持っているかどうかを確認し、このようなテーブルを終了する必要がある
[Role]  [Access] 
Admin  A 
Admin  B 
ReadOnly C 

[UserID] [Role} 
Abe  Admin 
Brad  ReadOnly 
Cathy  None 

さらに、これらの役割のすべてのアクセス権を持つ限り、ユーザーは複数の役割を持つことができます。

誰でも私の方向性を指摘できますか?私に論理または基本的な方法を示すことは十分役立ちます。私はこれをT-SQLでコード化する必要があります。ありがとう!

+1

? –

+0

@GordonLinoffはい、複数の役割を持つことができます。このユーザーは結果に複数の行を持ちます。これを質問に追加しました。どうも! –

答えて

1

ユーザーが通りへのアクセス権を持っていることをすべてのロールを取得することができます:ユーザーが複数の役割のためにアクセスした場合はどう

select u.userid, r.role 
from users u join 
    roles r 
    on u.access = r.access 
group by u.userid, r.role 
having count(*) = (select count(*) from roles r2 where r2.role = r.role); 
+1

これはまさに私が探しているものです!完全に動作し、高速です。ありがとう! –

関連する問題