日期:2014-05-19  浏览次数:20856 次

请教下子查询的用法-- 想统计每个系的教师人数

Department   表有   DepartmentID   ,DepartmentName

Teacher   表有   DepartmentID   ,TeacherID,TeacherName

下面的子查询想统计每个系的教师人数

select   DepartmentID,
(select   count(TeacherID)   from   Teacher     group   by   DepartmentID)   as   教师数
from   Department

出错:
消息   512,级别   16,状态   1,第   4   行
子查询返回的值不止一个。当子查询跟随在   =、!=、 <、 <=、> 、> =   之后,或子查询用作表达式时,这种情况是不允许的。


------解决方案--------------------
select
D.DepartmentID,D.DepartmentName,count(T.TeacherID) as 教师数
from
Department D,Teacher T
where
D.DepartmentID=T.DepartmentID
group by
D.DepartmentID,D.DepartmentName
------解决方案--------------------
select DepartmentID,
(select count(TeacherID) from Teacher group by DepartmentID) as 教师数
from Department

你这个
(select count(TeacherID) from Teacher group by DepartmentID)
会返回多个值,不同的DepartmentID,不同的count(TeacherID)

------解决方案--------------------

select DepartmentID,

(select count(TeacherID) from Teacher b
where a.DepartmentID=b.DepartmentID
group by DepartmentID) as 教师数

from Department a
------解决方案--------------------

select A.DepartmentID, (select count(TeacherID) from Teacher B where A.DepartmentID=B.DepartmentID
group by DepartmentID) as 教师数

from Department A