mysql 使用count进行多表查询
在做数据库的题目时遇到这么一个查询的题目,数据库中有两张表,分别为
题目要求统计教师的课程数量并按照教师名称倒序。
解题思路
刚拿到这个题是不是觉得很简单,两个表连接,用count统计一下不就行了吗?于是我的代码是这样的
select Tname,count(Cno)
from Teacher,Course
where Teacher.Tno=Course.Tno
order by Tname desc;
你觉得这样对吗?
结果是(周海芳 10)
明显是错误的,我又想是不是需要用group来进行分组,于是又写了
select Tname,count(Cno)
from Teacher,Course
group by Tname
having Teacher.Tno=Course.Tno;
但是这样having的条件就不对。查询一下count的用法
count(*) 它返回检索行的数目, 不论其是否包含 NULL值。
count(column) 它返回检索行column的不否包含 NULL值的数目。
于是,我确定了思路,1、修改from的范围,2、用group分组,3、用count统计各组的数目。
最终查询代码如下
select Tname,count(Cno)
from Teacher left outer join Course
on (Teacher.Tno=Course.Tno)
group by Tname desc
注意:这里必须是左外连接才能保存没有上课的老师,count统计的一定是Cno
可能是我比较菜吧,这个小问题想了20多分钟,在这里记录一下。