比如school---student,一个school对应多个student,我想按照school分组,然后等到对应底下的学生。这个只能先查出所有的school,然后按照school去查对应的student吧。不能一次性查吧。(上层是java封装)

解决方案 »

  1.   

     问题是我的展现时要按school分组,每个school底下是student的list.这种sql直接写在数据库编辑器里也没对应的显示吧。最多是school-student,school不能分组的。
      

  2.   

    我的效果不要求在ms-server里显示,只是结构能被java处理。你说的结构貌似不能被上层编程语言解析吧。
      

  3.   

    SQL Server查询返回的结果一定是个二维表, 至于如何展现你要的结构, 我想要在前端程序里再做出来的.
      

  4.   

    明白lz的意思。
    想在程序里一次性展现出来。
    我感觉可以这样做。
    定义一个HashTable,把schoolId作为key,List<student>作为value
    这样查出来以后,整个HashTable就是school的list
    HashTable的value就是每个school的student的list
      

  5.   

    没有做不到,只有想不到:select * from(
    select a.schoolname as orderlist,a.schoolname,b.studentid,b.studentname,b.othercol 
    from school a inner join student b on a.sid=b.sid 
    where not exists(select 1 from student where sid=b.sid and studentid<a.studentid)
    union all
    select a.schoolname,'',a.schoolname,b.studentid,b.studentname,b.othercol 
    from school a inner join student b on a.sid=b.sid 
    where exists(select 1 from student where sid=b.sid and studentid>a.studentid)
    )t order by schoolname,studentid想想看,这样查询会得到什么样的结果.
      

  6.   

    改一下,主查询不显示第一列:
    select schoolname,studentid,studentname,othercol from(
    select a.schoolname as orderlist,a.schoolname,b.studentid,b.studentname,b.othercol 
    from school a inner join student b on a.sid=b.sid 
    where not exists(select 1 from student where sid=b.sid and studentid<a.studentid)
    union all
    select a.schoolname,'',a.schoolname,b.studentid,b.studentname,b.othercol 
    from school a inner join student b on a.sid=b.sid 
    where exists(select 1 from student where sid=b.sid and studentid>a.studentid)
    )t order by orderlist,studentid