一条不难却很有逻辑性的SQL语句,数据库高手帮忙。

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:27:26
学生表
id name teacher_id
1 张飞 1
2 关羽 1
3 赵云 2

老师表
id name
1 诸葛亮
2 庞统
3 曹操

用一条SQL查出 学生数量不为0的所有老师的信息
显示为
id name stu_num
1 诸葛亮 2
2 庞统 1

一条SQL 你可以吗?
翼帆同学没有考虑0的情况哦, a5202003的方法查出来的是
id name stu_num
1 诸葛亮 3
2 庞统 3 alex_hy是正确答案
3 曹操 3

select 老师表.id,老师表.name,count(*) as stu_num from
老师表 inner join 学生表 on 老师表.id=teacher_id
group by 老师表.id,老师表.name
having count(*)>0

方法一
select *,(select count(1) from 学生表 teacher_id = a.id) from 老师表 a

方法二
select 老师表.*,count(学生表.id) from 老师表,学生表 where
老师表.id = 学生表.teacher_id group by 老师表.id,老师表.name

正确答案
select t.id,t.name,count(*) stu_num
from teacher t,student s
group by t.id,t.name
having count(*)>0