有一学生数据库,包含如下三个表:
1.学生关系表student
sno        sname ssex sbirthday sdept              speciality
20020101 胡一兵 男 1980/12/30 cs                   数学                
20050101 李勇 男 1987/1/12 cs                   计算机应用          
20050201 刘晨 女 1988/6/4 is                   电子商务            
20050202 张立 女 1988/8/25 IS                   数学                
20050301 王敏 女 1989/12/23 MA                   电子商务            
20050302 钱浩 男 1983/3/9 MA                   数学                
20050303 刘军 男2.课程关系表course
cno cname
C01   数据库
C02   数学
C03   信息系统
C04   操作系统3.成绩表sc
sno         cno score
20050101 C01   92
20050101 C02   85
20050101 C03   88
20050201 C02   90
20050201 C03   80
20050201 C01  85
20050101 C04   97
20050301 C02   88
20050301 C03   85
根据下列要求写出SQL语句:
1、查询选修了全部课程的学生姓名;
2、查询所有与李勇选修课程相同的学生信息。

解决方案 »

  1.   

    按你的数据,第一问是为空.根本就没有人选修全部三门课程.但你一定要:
    select sname
    from student
    where speciality='数学' and speciality='计算机应用' and speciality='电子商务' 
    第二问,按你的数据也是空:
    select sno,sname,ssex,sbirthday,adept,speciality
    from student x1,student x2
    where x1.speciality=x2.speciality and x2.sname='刘勇'最后我想讲的是:你所建的表太烂了,混乱冗长,根本就不叫表.真找不出这么烂的表了...
    既然都讲了,讲齐给你吧;数据库名才叫:student;表有三个应该是:information,score,course表...自己看吧.
      

  2.   


    1。select sname from student s inner join (SELECT SON FROM SC GROUP BY SNO HAVING count(sno)>4)t on s.sno=t.son