有三个表和其主要发字段如下学生表 
学号   姓名  班级编号收费项目表
唯一编号   班级编号   收费金额缴费表
唯一编号    学号   缴费金额   我现在要求在一张表中,列出所有学生应收费总额和实际缴费数。。
即如下表格:
学号   姓名   总收费金额   总缴费金额
请问如何写这个SQL。。我只会单独写。。
先谢谢了。。

解决方案 »

  1.   

    select 
          a.学号,a.姓名,
          isnull(b.总收费金额,0) as 总收费金额,
          isnull(c.总缴费金额,0) as 总缴费金额 
    from 学生表 a 
    left join (select 班级编号,sum(收费金额) as 收费金额 from 收费项目表 group by 班级编号) b
         on a.班级编号=b.班级编号
    left join (select 学号,sum(缴费金额) as 缴费金额 from 缴费表 group by 学号) c
         on a.学号=c.学号
      

  2.   

    请问这个视图怎么做??
    不好意思,复杂的SQL我做不出来。。
      

  3.   

    再次请问一下,,ACCESS是否支持上面的的查询?
    这个查询是不是利用了子查询
      

  4.   

    视图(名字是myview)定义如下:
    create view myview
    as
    select 学生.学号,学生.姓名,收费项目表.收费金额,缴费表.缴费金额  
    from  学生,收费项目表,缴费表
    where 学生.学号=缴费表.学号 and 学生.班级编号=收费项目表.班级编号 要得到的查询是
    select 学号,姓名,sum(收费金额) ,sum(缴费金额) from myview group by 学号
      

  5.   

    select 
          a.学号,a.姓名,a.班级编号,
          isnull(sum(b.总缴费金额),0) as 总缴费金额, 
          isnull(sum(c.总收费金额,0)) as 总收费金额
    from 学生表 a 
    left join 缴费表 b on a.学号 = b.学号 
    left join 收费项目表 c on a.班级编号 = c.班级编号
    group by a.学号,a.姓名,a.班级编号
      

  6.   

    试试这个,应该可以了:
    SELECT xh AS 学号, name AS 姓名,
              (SELECT SUM(b.projmx)
             FROM projct b
             WHERE b.classid = a.classid) AS 总收费金额,
              (SELECT SUM(c.numb)
             FROM pay c
             WHERE c.studxh = a.xh) AS 缴费额
    FROM student a这几个表结构好像有点不对头,但是语句肯定是可以的