求助,这些查询看简单,可我一个也没做出来,特别想知道..
这是一个公司的面试题,因第一个没做出来..后面的就都没做出来了..   
          题目如下: 
    学生表      S      (SNO,      SNAME)         SNO为学生号,SNAME为学生名 
    课程表 C   (CNO,CNAME,CTEACHER)   CNO为课程号,CNAME为课程名,CTEACHER课程老师 
 () 
    学生课程关系表 SC   (SNO   ,CNO,SCERAPER)      SCERAPER为学生成绩..       
   1.查询出没有选修李明老师课的学生名字. 
   2.二科课程以上(包括两科)不及格学生姓名及平均成绩. 
   3.即学过课程A又学过课程B的学生名. 
   4.课程A成绩比课程B好的学生名 
   5.课程A成绩比课程B好的学生名,及这些学生课程A的成绩,及课程B的成绩     
    我基本都没操作出来,感觉简单,但select后就发现需要合并表..但是我当时都做错了..哎..惭愧呀..求解..
------解决方案--------------------1.select SNAME from s where SNO in(select SNO from sc ,c where sc.CNO = d.CNO and c.CTEACHER =  '李明 ')
------解决方案--------------------1.查询出没有选修李明老师课的学生名字. 
 select s.sname from s left join ( 
 select sc.sno from c inner join sc on c.cno=sc.cno where c.CTEACHER= '李明 ') as t 
 on s.snp=t.sno 
 where t.sno is null 
 or: 
 select s.sname from s 
 where not exists ( 
 select 1 from c,sc where c.CTEACHER= '李明 ' and c.cno=sc.cno 
 and sc.sno=s.sno 
 )   
   2.二科课程以上(包括两科)不及格学生姓名及平均成绩. 
 select s.sname,avg(sc.SCERAPER) as AVGSCERAPER 
 from s,sc,( 
 select SNO  
 from sc 
 where SCERAPER <60 
 group by SNO  
 having count(*)> =0 
 ) as t 
 where s.sno=sc.sno 
 and s.sno=t.sno 
 group by s.sname     
   3.即学过课程A又学过课程B的学生名. 
 select s.sname 
 from s,sc a,sc b,c ac,c bc 
 where s.sno=a.sno 
 and s.sno=b.sno 
 and a.cno=ac.cno 
 and b.cno=bc.cno 
 and ac.cname= 'A ' 
 and bc.cname= 'b '   
   4.课程A成绩比课程B好的学生名 
 select s.sname 
 from s,sc a,sc b,c ac,c bc 
 where s.sno=a.sno 
 and s.sno=b.sno 
 and a.cno=ac.cno 
 and b.cno=bc.cno 
 and ac.cname= 'A ' 
 and bc.cname= 'b ' 
 and a.SCERAPER> b.SCERAPER 
   5.课程A成绩比课程B好的学生名,及这些学生课程A的成绩,及课程B的成绩 
 select s.sname,a.SCERAPER as ASCERAPER,b.SCERAPER as BSCERAPER 
 from s,sc a,sc b,c ac,c bc 
 where s.sno=a.sno 
 and s.sno=b.sno 
 and a.cno=ac.cno 
 and b.cno=bc.cno 
 and ac.cname= 'A ' 
 and bc.cname= 'b ' 
 and a.SCERAPER> b.SCERAPER