MySql数据库有一下三个表,记录学校,班级,学生的数据:学校表: 学校ID, 学校名称
班级表: 班级ID, 班级名称,学校ID
学生表: 学生ID, 学生名称,班级ID, 性别(0为女,1为男)要求按以下格式输出报表:学校名称  班级名称  男生总数  女生总数  男女总数
xxx         xxx       xxx        xxx    xxx请问如何写该SQL语句?? 偶在线等待,先谢谢了,^_^

解决方案 »

  1.   

    可以试试: http://www.finereport.com
      

  2.   

    select a.schoolname,b.classname,c.sex,count(c.sex) from school a,classx b,studs c
    where a.schoolid=b.schoolid and b.classid = c.classid 
    group by a.schoolname,b.classname,c.sex得到
    xx学校 xx班机 0 12
    xx学校 xx班机 1 2
    再用JSP组织.或者再使用子查询,合并成一条记录.
    --
    大概就这个样子,手头没有MYSQL,无法给你测试.
      

  3.   

    select c.学校名称,b.班级名称,a.男生总数,a.女生总数,a.男女总数
    from 学校表 c 
    left join 
    班级表 b
    on c.学校ID=b.学校ID
    left join 
    (
    select sum(case 性别 when 0 then 1 else 0 end) as 男生总数,sum(case 性别 when 1 then 1 else 0 end) as 女生总数,count(*) as 男女总数,班级ID from 学生表
    group by 班级ID
    ) a
    on a.班级ID=b.班级ID这是SQL SERVER或者ORACLE的写法,可能MYSQL里CASE是2样的写法,但MYSQL肯定支持CASE这方法的