一个SQL语句问下,从学生表sc和课程表cou中选择。

如何选择选择了特定几门课程的,在一个班内的所有所有学生信息?
hql.append("select sno,sname,c.cname from cou c where sname in(select sname from student s where ");
hql.append("s.class='"+ss[0]+"') ");
if(cc.length>=1&&cc[0]!=null){
hql.append("and c.cname='"+cc[0]+"' ");
}
if(cc.length>=2&&cc[1]!=null){
hql.append("or c.cname='"+cc[1]+"' ");
}
if(cc.length==3&&cc[2]!=null){
hql.append("or c.cname='"+cc[2]+"'");
}
这样子找到的总是在一个班内的,没法选择其他班,这SQL语句哪里错了吗?

图片说明

后面的条件你写的有问题,如果是 and c.name=cc[0] or c.name=cc[1] or c.name=cc[2],那c.name=cc[0]不成立,后面的也不成立,所以你只能找到一个班内
应该是 and (c.name=cc[0] or c.name=cc[1] or c.name=cc[2])