有人告诉我这不是一个很困难的事情,但是不幸的是我无法真正弄清楚。我有下表
Person
**ID_Pers** | PersName | City | State | Phone | Email
1950901123893 Michael Houston Texas --- ----
Student
**ID_student** | *ID_Pers* | entry_year | status | exit_year
A123 1950901123893 2014 finished 2017
Subject
**ID_subject** | Subject_name | credit_number | courses | laboratories
Exams
*ID_student* | *ID_subject* | **exam_date** | final_grade
粗体键是主键,而斜体键是外键。我必须提取至少通过的迈克尔已经通过的考试的学生。我知道我必须使用子查询,在这些子查询中,我首先选择迈克尔已通过的考试,然后至少选择已通过这些考试的学生。我在执行此任务时遇到困难。有人可以帮我吗?
答案 0 :(得分:0)
sp
我知道这基本上是为了选择迈克尔已通过的考试。但是我需要一些东西来提取至少已经通过他的人的其他人。
答案 1 :(得分:0)
您可以获取所有通过考试的学生(任何考试),然后将结果与查询中获取的考试进行合并。您的最终查询应如下所示:
SELECT * from Exams A
INNER JOIN student ON student.ID_student = exams.ID_student
INNER JOIN person ON student.ID_Pers = person.ID_pers
INNER JOIN
(SELECT * from Exams
INNER JOIN student ON student.ID_student = exams.ID_student
INNER JOIN person ON student.ID_Pers = person.ID_pers
WHERE Exams.final_grade >=5 AND person.PersName = "Michael") B ON A.ID_Subject = B.ID_Subject AND A.exam_date = B.exam_date
WHERE A.final_grade >=5;
希望这会有所帮助!