Ваш запрос не выполнен из-за способа использования оператора in
, для которого требуется имя столбца или выражение в левой части.
На основании вашего описания вашей цели, я подозреваю, что ваш запросможно переписать для использования условия exists
с коррелированными подзапросами для фильтрации, например:
select
firstName,
lastName
from students s
where
gender = 'M'
and exists(
select 1
from courses c
inner join registration r on c.courseCode = r.courseCode
where
c.courseName = 'Database Systems'
and s.studentID = r.studentID
)
and exists(
select 1
from courses c
inner join registration r on c.courseCode = r.courseCode
where
c.courseName = 'C++'
and s.studentID = r.studentID
)
Другое возможное решение - использование агрегации с предложением having
для фильтрации:
select s.firstName, s.lastName
from students s
inner join registration r
on s.studentID = r.studentID
inner join courses c
on c.courseCode = r.courseCode
and c.courseName in ('Database Systems', 'C++' )
where s.gender = 'M'
group by s.studentID, s.firstName, s.lastName
having count(distinct c.courseName) = 2