这是一个家庭作业的问题。我不要求的正确答案,我只是寻求帮助,我是否在正确的方向前进。
提示的是,我返回无论是谁(OR)的学生的名字和姓氏:(a)不是目前就读(不扩招表)或(b)在任何类自己部门内的最低得分。
我想出了是我的SQL查询:
SELECT FIRSTNAME, LASTNAME
FROM STUDENTS
JOIN ENROLLMENTS ON STUDENTS.NETID = ENROLLMENTS.NETID
JOIN COURSES ON COURSES.CRN = ENROLLMENTS.CRN
WHERE STUDENTS.NETID NOT IN (
SELECT NETID
FROM ENROLLMENTS
) OR
ENROLLMENTS.SCORE IN (
SELECT MIN(SCORE)
FROM ENROLLMENTS
WHERE COURSES.DEPARTMENT = STUDENTS.DEPARTMENT
GROUP BY ENROLLMENTS.CRN
);
我尝试使用JOIN条款,以在它们交叉的三个表结合起来。所述NETID是不同给每个学生,鉴定它们在许可登记表。每个类都有一个独特的CRN所以我连他们有课程表,并扩招表之间。
我不知道问题出在哪里,但预期的结果是:
Wbixik Yjepuriluwe
W和Y具有Avamijosu
Jheyiresoxo Bsexedoh
该rusota姆祖祖
但我的结果是:
Wbixik Yjepuriluwe
Zhropop Vduyumi
Jheyiresoxo Bsexedoh
该rusota姆祖祖
寻找任何指导让我重回正轨。
您可以尝试使用LEFT JOIN
SELECT FIRSTNAME, LASTNAME
FROM STUDENTS
left JOIN ENROLLMENTS ON STUDENTS.NETID = ENROLLMENTS.NETID
JOIN COURSES ON COURSES.CRN = ENROLLMENTS.CRN
where ENROLLMENTS.NETID is null OR
ENROLLMENTS.SCORE IN
(SELECT MIN(SCORE) FROM ENROLLMENTS
WHERE COURSES.DEPARTMENT = STUDENTS.DEPARTMENT
GROUP BY ENROLLMENTS.CRN
)