我有一张表,用于存储用户的权限,以授予或拒绝访问软件的不同模块。
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
这种方式很容易做报告。
感谢阅读。
答案 0 :(得分: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