Return 一个 table 的价值,过滤那些从未被分配给另一个人的人
Return a table of value by filtering those who have never been assigned to another
在这里快速提问。我有一个包含几张表的数据库,数量不多,但它们与参考键相关联。这是我的问题:
- Return
sigil
'Velvet' , 'Moise'
老师尚未教授的课程
我可以很容易地写出请求,但我似乎找不到它背后的正确逻辑。
这是我尝试过的:
SELECT g.sigil
FROM GroupCourse g JOIN Professor p
ON g.profCode = p.profCode
WHERE p.name != 'Velvet' AND p.name != 'Moise'
它正常工作,但如果我也有其他老师教这门课,比方说 TRX1277
,它只会删除 Velvet
和 Moise
教的那个。不是所有的人。我只想展示那些没有被那两个教过的人。
Table定义:
小组课程:
Primary keys : sigil, codeSession
sigil: CHAR
noGroup : INTEGER
sessionCode: INTEGER
profCode: CHAR
教授:
Primary key : profCode
profCode: VARCHAR
firstName: VARCHAR
lastName: VARCHAR
目前,我得到这个:
-------
SIGIL
-------
MGT1130
JPR6790
TRX1277
POU3333
Moise 没有注册课程。但是 Velvet 有 2 个。 MGT1130 和 POU3333。问题是,很少有其他老师也开设这些课程。因此,为什么我需要想办法让它看起来像这样:
-------
SIGIL
-------
JPR6790
TRX1277
我知道我遗漏了一件小东西,但我找不到它:(
@fa06 的解决方案很接近,但排除了教授教授的行,而不是任何一位教授从未教授过的课程。
SELECT g.sigil
FROM GroupCourse g
WHERE not exists (
select 1
FROM GroupCourse g1
JOIN Professor p ON g1.profCode = p.profCode
where g.sigil=g1.sigil
and p.name in('Velvet','Moise')
)
在这里快速提问。我有一个包含几张表的数据库,数量不多,但它们与参考键相关联。这是我的问题:
- Return
sigil
'Velvet' , 'Moise'
老师尚未教授的课程
我可以很容易地写出请求,但我似乎找不到它背后的正确逻辑。
这是我尝试过的:
SELECT g.sigil
FROM GroupCourse g JOIN Professor p
ON g.profCode = p.profCode
WHERE p.name != 'Velvet' AND p.name != 'Moise'
它正常工作,但如果我也有其他老师教这门课,比方说 TRX1277
,它只会删除 Velvet
和 Moise
教的那个。不是所有的人。我只想展示那些没有被那两个教过的人。
Table定义:
小组课程:
Primary keys : sigil, codeSession
sigil: CHAR
noGroup : INTEGER
sessionCode: INTEGER
profCode: CHAR
教授:
Primary key : profCode
profCode: VARCHAR
firstName: VARCHAR
lastName: VARCHAR
目前,我得到这个:
-------
SIGIL
-------
MGT1130
JPR6790
TRX1277
POU3333
Moise 没有注册课程。但是 Velvet 有 2 个。 MGT1130 和 POU3333。问题是,很少有其他老师也开设这些课程。因此,为什么我需要想办法让它看起来像这样:
-------
SIGIL
-------
JPR6790
TRX1277
我知道我遗漏了一件小东西,但我找不到它:(
@fa06 的解决方案很接近,但排除了教授教授的行,而不是任何一位教授从未教授过的课程。
SELECT g.sigil
FROM GroupCourse g
WHERE not exists (
select 1
FROM GroupCourse g1
JOIN Professor p ON g1.profCode = p.profCode
where g.sigil=g1.sigil
and p.name in('Velvet','Moise')
)