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
TO: wylwyl1130(落雪山林) 谢谢答复,;) 不过,这个效率是最好的么?是否有更好一些的解决方案呢?
select 编号 学校编号, 名称 学校名称,(select sum(1) from Office o where 0.学校编号 = s.编号) 科室数,,(select sum(1) from Teacher t where t.学校编号 = s.编号) from School s试试这个SQL
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.名称;
to zmgowin(隐者(龙祖宗)) 这个方法可能存在这样的问题,如果有个学校的科室数为0,或者教师数为0,他就不能出现在统计结果中。怎么才能解决?
试一下行不行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.名称;
to: bzszp(www.bzszp.533.net) 还是不行的。;(
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.编号;
谢谢答复,;)
不过,这个效率是最好的么?是否有更好一些的解决方案呢?
from School s试试这个SQL
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.名称;
这个方法可能存在这样的问题,如果有个学校的科室数为0,或者教师数为0,他就不能出现在统计结果中。怎么才能解决?
---------------------
编号 名称
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.学校编号
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.名称;
还是不行的。;(
(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.编号;