select a.编号,a.名称,(select count(*) from Office b where a.学校编号 = b.学校编号 group by 学校编号),(select count(*) from Teacher c where a.学校编号 = c.学校编号 group by 学校编号) from School a 

解决方案 »

  1.   

    TO: wylwyl1130(落雪山林)
    谢谢答复,;)
    不过,这个效率是最好的么?是否有更好一些的解决方案呢?
      

  2.   

    select 编号  学校编号, 名称 学校名称,(select sum(1) from Office o where 0.学校编号 = s.编号)  科室数,,(select sum(1) from Teacher t where t.学校编号 = s.编号)
    from School s试试这个SQL
      

  3.   

    select 
       a.编号 as 学校编号,a.名称 as 学校名称,count(distinct b.编号) as 科室数,count(distinct c.编号) as 教师数
    from teacher c,office b,school a
    where a.编号=b.学校编号 and
          a.编号=c.学校编号
    group by a.编号,a.名称;
      

  4.   

    to zmgowin(隐者(龙祖宗)) 
    这个方法可能存在这样的问题,如果有个学校的科室数为0,或者教师数为0,他就不能出现在统计结果中。怎么才能解决?
      

  5.   

    就是试了一下,不能显示。表1:学校信息School
    ---------------------
    编号 名称
    1    ABC
    2    DEF
    3    XYZ表二:学校科室Office
    ----------------------
    编号  学校编号  名称
    1      1         G
    2      1         H
    3      2         I表三:学校教师Teacher
    ---------------------
    编号  学校编号  教师名称
    1      1        张三
    2      1        李四
    3      2        王五如下结果:
    -----------------------------------------
    学校编号 学校名称  科室数  教师数
    1        ABC         2        2
    2        DEF         1        1编号为3的学校不显示。因为b和c中都没有学校3的数据,不满足条件
    where a.编号=b.学校编号 and
          a.编号=c.学校编号
      

  6.   

    试一下行不行select    
         a.编号  as  学校编号,a.名称  as  学校名称,count(distinct  b.编号)  as  科室数,count(distinct  c.编号)  as  教师数  
    from  teacher  c,office  b,school  a  
    where  a.编号=b.学校编号(+)  and  
               a.编号=c.学校编号(+)  
    group  by  a.编号,a.名称;
      

  7.   

    to:  bzszp(www.bzszp.533.net) 
      还是不行的。;(
      

  8.   

    select t.*,tt.教师数 from 
    (select a.编号 as 学校编号,a.名称 as 学校名称,count(b.编号) as 科室数
    from office b,school a      
    where a.编号=b.学校编号(+) 
    group by a.编号,a.名称) t,
    (select a.编号 as 学校编号,a.名称 as 学校名称,count(c.编号) as 教师数 
    from teacher c,school a      
    where a.编号=c.学校编号(+)      
    group by a.编号) tt
    where t.编号=tt.编号;