我有两个数据库表:
Course_Module表:
CourseId ModuleId
1 1
1 2
1 3
模块表:
ModuleId ModuleNo ModuleName Credits
1 CHI2513 Systems Strategy 20
2 CHI2550 Modern Database Applications 20
3 CHI2565 Ecommerce - Business and Technology 20
4 CHT2220 Interactive Systems 20
5 CHT2520 Advanced Web Programming 20
6 CHI2554 Patent Law 40
现在我不知道如何做到这一点,但我想要做的是创建查询,它将输出一组记录,显示一个不在所选课程中的模块列表。
例如,如果是CourseId = 1
,那么它应该从查询中输出的模块如下:
4 CHT2220 Interactive Systems 20
5 CHT2520 Advanced Web Programming 20
6 CHI2554 Patent Law 40
这是因为您可以在Course_Module表中看到,这些模块不属于选择的CourseId 1
。
但是如何编写这样的查询呢?以下是我创建的一个简单查询:
SELECT cm.CourseId, m.ModuleId, m.ModuleNo, m.ModuleName, m.Credits
FROM Course_Module cm
INNER JOIN Module m ON cm.ModuleId = m.ModuleId
WHERE
(CourseId = 1)
ORDER BY ModuleNo
答案 0 :(得分:2)
以下情况如何?
SELECT
m.*
FROM
Module m
WHERE
m.ModuleId NOT IN (
SELECT cm.ModuleId
FROM Course_Module cm
WHERE cm.CourseId = 1
);
答案 1 :(得分:0)
我认为这可行:
SELECT
Module.*
FROM
Module
WHERE
ModuleId NOT IN ( SELECT ModuleId FROM CourseId WHERE CourseId = 1)