gpt4 book ai didi

SQL Server 查询 : how to return set of values based on condition?

转载 作者:行者123 更新时间:2023-12-02 08:50:00 24 4
gpt4 key购买 nike

考虑以下场景(有点做作,但比我遇到的真实场景要简单):

拥有在线文档管理系统的大学想要限制哪些教授可以查看哪些文档。有些教授可以看到属于任何部门的文件,有些教授只能看到属于特定部门的文件。

这是架构:

create table Professors (
ProfessorId int primary key,
ProfessorName varchar(50)
);

create table Departments (
DepartmentId int primary key,
DepartmentName varchar(50)
);

create table ProfessorDepartments (
ProfessorId int,
DepartmentId int
);

insert into Professors values (1, 'Professor A'), (2, 'Professor B');
insert into Departments values (1, 'Chemistry'), (2, 'Computer Science'), (3, 'Math'), (4, 'Physics');
insert into ProfessorDepartments values (1,2), (1,3);

这里是棘手的部分:具有无限制访问权限的教授将不会在 ProfessorDepartments 表中列出任何部门。 (这样,教授将自动获得任何新部门的访问权限。)

如何获取特定教授的允许部门列表?如果教授的访问权限有限,则列表需要来自 ProfessorDepartments 表;如果教授的访问权限不受限制,则列表需要来自 Departments 表。

最佳答案

SELECT
Professors.ProfessorName,
Departments.DepartmentName
FROM
Professors
LEFT JOIN
ProfessorDepartments
ON Professors.ProfessorId = ProfessorDepartments.ProfessorId
LEFT JOIN
Departments
ON ProfessorDepartments.DepartmentId = Departments.DepartmentId
OR ProfessorDepartments.DepartmentId IS NULL

关于SQL Server 查询 : how to return set of values based on condition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com