SELECT * FROM 学生表 WHERE 学生ID IN
(
SELECT 学生ID FROM 选课表 WHERE 课程ID IN   --一个学生也困难选择多个课程
(
SELECT 课程ID FROM 课程表 WHERE 授课老师ID=(SELECT 老师ID FROM 老师表 WHERE 名称='张静')  --一个老师可能带多门课程
)
)select a.学生ID,a.名称,c.课程名,d.授课老师名称
from 学生表 a,选课表 b,课程表 c,老师表 d
where a.学生ID=b.学生ID and b.课程ID=c.课程ID 
and c.授课老师id=d.老师IDselect sum(课时) from 课程表 where 课程ID in   --所有课程的课时的总和
(
select 课程ID from 选课表 where 学生ID=(select 学生ID from 学生表 where 名称='王娟')
)

解决方案 »

  1.   

    1) select 学生表.名称 from 学生表,选课表,课程表,老师表
     where 学生表.学生ID = 选课表.学生ID 
         and 选课表.课程ID = 课程表.课程ID
         and 课程表.授课老师 = 老师表.老师ID
    2)
      select 学生表.* from 学生表,选课表,课程表,老师表
     where 学生表.学生ID = 选课表.学生ID 
         and 选课表.课程ID = 课程表.课程ID
         and 课程表.授课老师 = 老师表.老师ID
    3) select SUM(课程表.课时) from 学生表,选课表,课程表,老师表
     where 学生表.学生ID = 选课表.学生ID 
         and 选课表.课程ID = 课程表.课程ID
         and 课程表.授课老师 = 老师表.老师ID
         and 学生表.名称 ='王娟'
         group by 学生表.名称
      

  2.   

    2)的select 条件,看清问题,改一下:    select 学生表.学生ID,学生表.名称,课程表.课程名,老师表.名称