Если бы вы хотели, чтобы все студенты, которые изучали 3 предмета или более, использовали бы вы тройное соединение (или больше)? Это убийца производительности. Вместо всех этих двойных объединений, объедините один раз, фильтруйте и агрегируйте с условием в предложении having
:
select s.StudentID, s.StudFirstName, s.StudLastName
from Students s
join Student_Schedules as ss on s.StudentID = ss.StudentID
join Classes as c on ss.ClassID = c.ClassID
join Subjects as sbj on c.SubjectID = sbj.SubjectID
where sbj.SubjectCode in ('ENG 101', 'ENG 102')
group by s.StudentID, s.StudFirstName, s.StudLastName
having count(distinct sbj.SubjectCode) = 2
Я считаю, что distinct
на самом деле не требуется в count()
, если нет дубликаты.