SQL:找到完成课程预备课程的学生

时间:2017-02-11 06:59:02

标签: sql sqlite

我有这两个表: 先决条件:(cid,pre-cid) (记录:sid,cid,qtr,年份,年级)。

我必须找到只使用NOT IN满足某个班级先决条件的学生。我目前的疑问是:

Node2

但是,我的查询会返回已经采用任何先决条件的学生,而不是所有先决条件。我无法弄清楚如何制作它,以便检查课程的所有先决条件。

2 个答案:

答案 0 :(得分:1)

select distinct r.sid
from record r
where r.sid not in (
    select r.sid
    from prerequisite c
    where c.cid = "CSE132X" and 
    c.pre-cid not in (
          select r2.cid
          from record r2
          where r2.sid = r.sid
    )
);

答案 1 :(得分:0)

这样的事情:

select distinct sid from record y where grade>=2 and not exists( select * from prerequisite where cid='CSE132X' and precid not in (select cid from record x where x.sid=y.sid) );