我正在使用MS SQL。
对于我的安全系统,我有一个访问组/权限,一个到多个表设置。为用户分配一个组。每个组可以拥有多种不同的权限。如果一个组具有特定权限,我需要一个select语句来检查(返回一个计数)。
我将为select语句提供的数据是User的GroupID和他们请求访问的permissionName。
逻辑上我需要的是:
pID = SELECT permissionID FROM Permission_List WHERE permissionName = 'News'
Group_Permission
表格以查看用户的GroupID
是否与权利ID等于pID相交groupID groupName groupDesc
1 Standard Normal Access Level.
2 Limited Limited Access Level.
3 Medium Medium Access Level.
permissionID permissionName permissionProtect permissionDesc
1 News 0 News section access.
2 Forums 0 Forums section access.
3 Contacts 0 Contact section access.
groupID permissionID
1 1
1 2
1 3
2 1
3 1
3 2
答案 0 :(得分:0)
您应该能够JOIN
这些表并使用COUNT
聚合。对于此示例,我假设您正在提供组ID和权限名称。
SELECT COUNT(*)
FROM Group_Permission GP
JOIN Permission_List PL ON GP.permissionId = PL.permissionId
WHERE PL.permissionName = 'News'
AND GP.groupId = @someGroupId
如果count大于0,则该组的权限存在。