一张学生表和一张班级表查询这个某个班的男生数sql该怎么写?

问题描述:

一张学生表和一张班级表查询这个某个班的男生数sql该怎么写?

班级表:
class_Id class_No(班级编号) grade(年级)
1 5 3 -------------->
2 6 6
学生表:
stu_Id stu_Name sex class_Id
1 张三 男 1
2 李四 男 1
3 王五 男 2
4 刘柳 女 1
查询出3年级5班的男学生人数语句该怎么写?
如果学生表中没有class_Id查询语句又该怎么写?
有外键关联和没有外键关联的查询我都混淆了,
1个回答 分类:综合 2014-10-22

问题解答:

我来补答
select count(*)
from 学生表 where class_id in (select class_id from 班级表 where grade=3 and class_no=5) and sex='男' 学生表中如果没有class_id,那么判断不出某些人属于哪个班,没法写
再问: ( 学生表.class_Id = 班级表.class_id ) 这种方式的查询又是怎么回事,都搞懵了!能具体回答一下吗,非常谢谢啊!
再答: 刚才我写那种是嵌套查询你说的这种是关联查询select count(*)
from 班级表,学生表 where 班级表.class_id=学生表.class_id and 班级表.grade=3 and 班级表.class_no=5 and 学生表.sex='男' 其实就是找两个表关联的字段,根据题里的意思再把其他条件加上,你先看这个能不能看明白
再问: 哦,原来我一直把这两个弄混淆了。太感谢你啦,再问一下用group by 是怎么回事?嵌套查询和关联查询哪个好用?
再答: group by 是分组查询比如你上边问的是查询男生人数,但是我换种提问,就是查3年5班男女分别的人数各是多少select 学生表.sex,count(*) from 班级表,学生表 where 班级表.class_id=学生表.class_id and 班级表.grade=3 and 班级表.class_no=5 group by 学生表.sex这样的话就需要分组group by 了
再问: 天啦,我居然把这三种情况混淆在一起了,听你讲完之后我突然感觉自己好傻啊。太谢谢了!
 
 
展开全文阅读
剩余:2000
下一页:老师第一十三题