我有以下情况,我不确定如何最好地解决它。任何有关如何准备所需视图的指导将不胜感激。
我有 4 个表:
用户 (userid int, username varchar)
角色 (roleid int, rolename varchar)
businessunit (buid int, buname varchar)
user_role_map (userid, roleid, buid)
在角色表中,我有一个 id 为 0 的角色,它是“系统管理员”角色,在 businessunit 表中,我有一个 IT 业务部门。从以下查询产生的任何用户都将被视为系统管理员,并且应该对每个业务部门具有完全访问权限。
SELECT userid FROM user_role_map WHERE roleid = 0 AND buid = 0
我需要构建一个视图,将所有“非系统管理员”联合显示到每个业务部门和每个“系统管理员”用户的列表中。通过以下查询,第一部分很容易,但第二部分是我正在努力解决的问题。
SELECT userid, roleid, buid FROM user_role_map WHERE roleid > 0 AND buid > 0
我将提供一些示例数据来帮助说明我要完成的工作:
users
---------------
1, "sysAdmin"
2, "salesUser1"
3, "serviceUser1"
4, "manager1"
5, "salesUser2"
6, "serviceUser2"
7, "manager2"
roles
---------------
0, "SystemAdmin"
1, "Full"
2, "Update"
3, "Read"
businessunit --------------- 0,“IT”1,“fooSales”2,“fooService”3,“barSales”4,“barService”
user_role_map
---------------
1, 0, 0
2, 1, 1
2, 3, 3
3, 1, 2
3, 3, 4
4, 1, 1
4, 1, 2
5, 1, 3
5, 3, 1
6, 1, 4
6, 3, 3
7, 1, 2
7, 1, 4
最后,我需要视图为上述示例数据提供以下内容(注意最后 4 行):
new view
---------------
2, 1, 1
2, 3, 3
3, 1, 2
3, 3, 4
4, 1, 1
4, 1, 2
5, 1, 3
5, 3, 1
6, 1, 4
6, 3, 3
7, 1, 2
7, 1, 4
1, 1, 1
1, 1, 2
1, 1, 3
1, 1, 4
注意:这里的示例数据只有一个“系统管理员”用户,但可以有任意数量的这种类型的用户。