下周我有一个关于数据库的大学实习。我需要围绕一所大学的计划创建 15 个查询,如下所示:
- 学生(学生编号、名字、姓氏、性别、出生日期、地址、级别、学位代码)
- 学位(Degree_Code,Degree_Name,School_Name)
- 模块(Module_Code、Module_Title、School_Name)
- 学校(School_Name,教师,校长)
- Take_Exam(Student_No, Module_Code, Mark)
我已经完成了 14 个查询,但我被困在这个查询上:
- 检索参加每个模块的学生的姓名。(提示。使用不存在)。
我一直在阅读不存在的查询,但我什至不知道从哪里开始!我创建了这段代码:
select students.student_no, fname, lname, count(module_code)
from students left join take_exam using (student_no)
group by student_no
having count(module_code) < 19
order by lname;
这将返回所有未参加所有 19 个模块的学生。但是,我讨厌代码,因为它涉及 < 19,这意味着如果以后模块的数量发生了变化,则该值将需要更改,这是低效的。
谁能指出我正确的方向并给我一些关于使用“不存在”查询的指导?
谢谢,安德鲁