1

ソフトウェアのさまざまなモジュールへのアクセスを許可または拒否するユーザーの権限を格納するテーブルがあります。

idUser     idModule
  1           1
  1           2
  1           3
  2           4

ユーザー「1」は、モジュール 1、2、3 にアクセスできますが、4 にはアクセスできません。ユーザー「2」は、モジュール 4 のみにアクセスできます。

したがって、idModule は Module テーブルからの FK です。ユーザーがアクセスできる場合、このテーブルに行があり、それ以外の場合は拒否されます。

idModule           Module
   1          Can Create Users
   2          Can Edit Users
   3          Can Delete Users
   4          Can View Users

出力するクエリが欲しい:

idUser  Module1    Module2    Module3    Module4
  1        1          1          1          0
  2        0          0          0          1

この方法で簡単にレポートを作成できます。

読んでくれてありがとう。

4

1 に答える 1

0

おそらく単純な非正規化クエリ:

select idUser
     , max(case when idModule=1 then 1 else 0 end) as Module1
     , max(case when idModule=2 then 1 else 0 end) as Module2
     , max(case when idModule=3 then 1 else 0 end) as Module3
     , max(case when idModule=4 then 1 else 0 end) as Module4
from   your_table
group by 1
于 2012-07-27T20:40:47.653 に答える