求助,关于数据库联合查询的问题。
小弟是一个菜鸟,今天碰到这样一个题目。有这样三个表,学生信息表(学生编号,学生姓名,性别)课程表(课程编号,课程名称)成绩表(学生编号,课程编号,成绩)问,1。查出所有学...
小弟是一个菜鸟,今天碰到这样一个题目。
有这样三个表,学生信息表(学生编号,学生姓名,性别)
课程表(课程编号,课程名称)
成绩表(学生编号,课程编号,成绩)
问,1。查出所有学生姓名,课程为数学的成绩,按照成绩降序排列。
2。查出所有男生,女生英语成绩的平均数和最高分。
请各位大哥大姐,帮帮我,写出实现思路,还有,联合查询涉及到多个表时到底要怎么搞清思路,谢谢了。
我会给很多分的。 展开
有这样三个表,学生信息表(学生编号,学生姓名,性别)
课程表(课程编号,课程名称)
成绩表(学生编号,课程编号,成绩)
问,1。查出所有学生姓名,课程为数学的成绩,按照成绩降序排列。
2。查出所有男生,女生英语成绩的平均数和最高分。
请各位大哥大姐,帮帮我,写出实现思路,还有,联合查询涉及到多个表时到底要怎么搞清思路,谢谢了。
我会给很多分的。 展开
1个回答
展开全部
设学生信息表表名:Student
编号:Sno 姓名:Sname 性别:gender
设课程表表名: Course
课程编号:Cno 课程名称:Cname
设成绩表表名:Results
学生编号:Rsno 课程编号:Rcno 成绩:resu
插入数据:
Stsdent:
1 张三 男
2 美女 女
3 小美 女
4 剑剑 男
Course:
1 数学
2 语文
3 英语
Results:
1 1 80
1 2 90
1 3 95
2 1 90
2 2 95
2 3 98
3 1 99
3 2 95
3 3 100
4 1 75
4 2 60
4 3 80
1. 查出所有学生姓名,课程为数学的成绩,按照成绩降序排列
select 学生姓名=a.Sname,课程名称=b.Cname,成绩=c.resu from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=1 order by c.resu desc
2.查出所有男生,女生英语成绩的平均数和最高分
select 男生英语平均成绩=(select avg(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='男'),女生英语平均成绩=(select avg(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='女'),男生英语最高成绩=(select max(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='男'),女生英语最高成绩=(select max(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='女')
思路就是要找到表的关联关系,比如这道题里面,学生表的学生编号和成绩表的学生编号是对应关系,课程表的课程编号和成绩表的课程编号是对应关系,那么只要2个数据一样,这2条数据就是对应的.查询的时候,这些关系作为查询的条件,查询出的结果就是你想要的结果.
切记,一定要找准对应关系,只要关系找对了,联合查询很简单.
编号:Sno 姓名:Sname 性别:gender
设课程表表名: Course
课程编号:Cno 课程名称:Cname
设成绩表表名:Results
学生编号:Rsno 课程编号:Rcno 成绩:resu
插入数据:
Stsdent:
1 张三 男
2 美女 女
3 小美 女
4 剑剑 男
Course:
1 数学
2 语文
3 英语
Results:
1 1 80
1 2 90
1 3 95
2 1 90
2 2 95
2 3 98
3 1 99
3 2 95
3 3 100
4 1 75
4 2 60
4 3 80
1. 查出所有学生姓名,课程为数学的成绩,按照成绩降序排列
select 学生姓名=a.Sname,课程名称=b.Cname,成绩=c.resu from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=1 order by c.resu desc
2.查出所有男生,女生英语成绩的平均数和最高分
select 男生英语平均成绩=(select avg(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='男'),女生英语平均成绩=(select avg(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='女'),男生英语最高成绩=(select max(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='男'),女生英语最高成绩=(select max(c.resu) from Student a,Course b,Results c where c.Rsno=a.Sno and c.Rcno=b.Cno and b.Cno=3 and a.gender='女')
思路就是要找到表的关联关系,比如这道题里面,学生表的学生编号和成绩表的学生编号是对应关系,课程表的课程编号和成绩表的课程编号是对应关系,那么只要2个数据一样,这2条数据就是对应的.查询的时候,这些关系作为查询的条件,查询出的结果就是你想要的结果.
切记,一定要找准对应关系,只要关系找对了,联合查询很简单.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询