Mysql 匹配嵌套select语句返回的所有行

Mysql 匹配嵌套select语句返回的所有行,mysql,sql,select,relational-database,relational-algebra,Mysql,Sql,Select,Relational Database,Relational Algebra,我试图找到参加某个讲师提供的所有课程的学生的姓名(其表格由内部select语句返回)。但是,我下面的查询返回参加任何课程的学生的表格 select distinct name from takes natural join (select distinct course_id from instructor natural join teaches where name like '%ck') as t natural join student where dept_name='Biology

我试图找到参加某个讲师提供的所有课程的学生的姓名(其表格由内部select语句返回)。但是,我下面的查询返回参加任何课程的学生的表格

select distinct name
from takes natural join (select distinct  course_id
from instructor natural join teaches
where name like '%ck') as t natural join student
where dept_name='Biology'

我可以发布数据库的整个模式,但这真的太过分了。我可能在mysql中缺少一个简单的关键字。谢谢你的帮助

我有一个解决方案不知道是不是最好,但它对这种情况有效

    select name  
        from student
        where id in (select id from takes where  teacher like '%a')
    group by name
        having count(id) =
    (select count(id) from takes where teacher like '%a');

试试这个:)请根据你的计划安排好

请提供上面使用的表格方案这里是:学生表格是否包含课程?我愿意??不,需要表格。这就是我使用ID加入他们的原因。谢谢你的努力,但这离我需要的还很远。我贴了一个更接近的问题,只有一个问题我不应该知道从某个老师那里选修了所有课程的学生是生物系的。@Umut:(所以它不起作用,你能不能告诉我我错过了什么,这样我才能让它起作用。)首先,它需要是一个嵌套的select语句,非常类似于我在上面发布的语句。顺便说一句,id和课程id是不同的东西。教师和学生都有id,教学和课程id,如模式所示。问题是最后一行(dept_name='Biology')我之所以这样写,是因为我知道,通过手动检查表格的内容,从特定讲师那里选修了所有课程的学生来自生物系。我需要知道,无论学生系名如何,是谁从该讲师那里选修了所有课程。