SQL不是可识别的表提示选项。使用了非布尔类型表达式

course_id”不是可识别的表提示选项。如果它要作为表值函数的参数,请确保您的数据库兼容模式设置为90 .
where附近是在应使用条件的上下文中指定了非布尔类型的表达式。

SELECT distinct takes.ID
from instructor natural join teaches
join takes using (course_id,sec_id, semester, year)
where name='Einstein';

select distinct takes.ID
from takes
where course_id in(select course_id
from instructor natural join teaches
where instructor.name= 'Einstein' );

消息 102,级别 15,状态 1,第 3 行
“course_id”不是已识别的表提示选项。
消息 156,级别 15,状态 1,第 9 行
关键字 'where' 附近有语法错误。
使用了两种方法去解决这个问题都出现了错误,请问这两个问题怎么解决?

我想要达到的结果:找出名为Einstein的教师所教的所有学生的标识,保证结果中没有重复

img


sql :

select distinct student.ID
from student,takes,instructor,teaches
where
student.ID=takes.ID AND
instructor.ID=teaches.ID AND
takes.course_id=teaches.course_id AND
takes.sec_id=teaches.sec_id AND
takes.semester=teaches.semester AND
takes.year=teaches.year AND
instructor.name ='Einstein';