students (sid, sname)
courses (cid, cname, dept)
take (sid, cid, grade)
我们想要找到参加“CS”系所有课程的学生的学生人数。
为什么第 4 行是答案?
它与第 1 行到第 3 行有何不同?
我在 DB 中的 Solved-Ex 中读到了这篇文章。
第四行的另一种表达方式是:
all students
except
(
all combinations of students and CS courses
except
all taken courses
)
括号内的集合包含所有未修读的学生 + CS 课程组合。从所有学生中减去这个,你就得到了参加所有 CS 考试的学生。