Мой возврат-результат возвращает все правильные ответы, кроме одного, без ошибок - PullRequest
0 голосов
/ 04 февраля 2019

Это домашнее задание.Я не прошу правильного ответа, я просто ищу помощи, иду ли я в правильном направлении.

Мне подсказывают, что я должен вернуть имя и фамилию студентов, которые либо(ИЛИ): (a) В настоящее время не зарегистрирован (не в таблице регистрации) или (b) имеет наименьший балл в любом классе в своем отделе.

Схема базы данных выглядит следующим образом: part 1part 2

Мой 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, поэтому я связал их там между таблицей Courses и таблицей Enrollments.

Я не знаю, в чем проблема, но ожидаемый результат:

Wbixik Yjepuriluwe

Wtoyi Avamijosu

Jheyiresoxo Bsexedoh

Ulerusota Mzuzu

Но мой результат:

Wbixik Yjepuriluwe

Jropop Vduyumi

Jheyiresoxo Bsexedoh

Ulerusota Mzuzu

Ищите любые указания, чтобы вернуть меня на путь.

1 Ответ

0 голосов
/ 04 февраля 2019

Вы можете попробовать использовать левое соединение

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
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...