У меня есть следующие таблицы.Команда SQL для выполнения деления
STUDENT(ID, FIRST_NAME, LAST_NAME, MAJOR)
INSTRUCTOR(ID, FIRST_NAME, LAST_NAME, DEPARTMENT, SALARY)
COURSE(ID, COURSE_NAME, DESCRIPTION)
COURSE_OFFERING(ID, COURSE_ID, INSTRUCTOR_ID, SEMESTER)
GRADE(STUDENT_ID, COURSE_OFFERING_ID, GRADE)
Найдите имена всех студентов, которые прошли все курсы, преподаваемые Эйнштейном.
SQL-команда, которую я использовал
select STUDENT_ID
from grade where not exists
(select grade.COURSE_OFFERING_ID from grade
where grade.COURSE_OFFERING_ID not in
(
select course_offering.ID
from instructor join course_offering
where instructor.ID = course_offering.INSTRUCTOR_ID
and instructor.FIRST_NAME = 'Einstein')
);
Пожалуйста, объясните, где я делаю ошибку или есть другой способ выполнять деление в SQL?
Я не вижу никакого разделения здесь? Почему вы используете, не существует, а не внутри? Вы должны иметь возможность использовать одну положительную связь вместо двух негативов. –
Мне нужно найти студентов, которые прошли все курсы. Значит, это происходит под делением? Когда я помещал его в реляционную алгебру, сначала я бы нашел курсы, преподаваемые Эйнштейном, а затем найти студентов, которые все взяли, мне нужно разделить первый результат. Итак, я хочу знать, как установить деление реляционной алгебры в SQL? – mukund