我的问题如下:我试图查看哪些用户可以访问具有相同权限的另一个报告但具有相同权限的报告。我使用的是SQL Server,而不是使用临时表。
表roles_definition的结构如下:
Role#, ReportName, AccessRight
因此,我想看看,如果角色,让我们说,管理员可以访问具有写访问权限的报告A,但无法访问具有相同权限的报告B.我想要它显示
Administrator, Report A, Write
或
Administrator, Report B, Write
我尝试了以下查询但没有成功。
SELECT
rd1.roleID, rd1.reportName, rd1.accessRight
FROM
roles_definition rd1
FULL OUTER JOIN
roles_definition rd2 ON rd1.roleID = rd2 .roleID
AND rd1.reportName <> rd2.reportName
WHERE
rd1.reportName IN ('Clients', 'Attachments')
ORDER BY
rd1.roleID, rd1.reportName;
感谢您的帮助!
答案 0 :(得分:1)
尝试这样的事情:
SELECT rd1.roleID, rd1.reportName, rd1.accessRight
FROM roles_definition rd1
INNER JOIN roles_definition rd2
ON rd1.roleID = rd2 .roleID
AND rd1.reportName > rd2.reportName
AND rd1.accessRight != rd2.accessRight
WHERE rd1.reportName IN ('Clients', 'Attachments')
ORDER BY rd1.roleID , rd1.reportName;