现有三个表,学生表(学生编号,学生名),课程表(课程编号,课程名)和成绩表(学生编号,课程编号,成绩),现显示所有课程修完的学生姓名,课程名及成绩。
解决方案 »
- 如何设计一个成绩管理系统的数据库?目的是统计高中三年的历次考试成绩和当次考试的年级质量分析。
- sql server 数据库恢复问题,急等!!!请各位帮忙!!
- 插入sql2005数据库,inert 语句中含有单引号,怎么办啊?
- 一个关于SQL别名和分页的问题。求解决,在线等。
- 我使用千方百剂3。0升级到4。0后提示Invalid variant type conversion
- 刚整理出来的日期函数和字符函数及例子,供大家分享!请大家给点意见。
- 执行速度的问题
- SQL 2000 游标问题,头疼
- 我问一个安装的问题
- 通过测试,分数有你来定
- 求一个sql查询
- sql server 数据库有错误,如何修复
select 学生表.学生名,课程表.课程名,成绩表.成绩 from 成绩表 join 学生表 on 成绩表.学生编号=学生表.学生编号 join 课程表 on 成绩表.课程编号=课程表.课程编号 where 成绩表.成绩>=60
发新帖请在左侧树中选择问题类别,然后点击右上侧"提问".
===========================================================================
SELECT a.学生姓名,b.课程名,MAX(c.成绩) AS 成绩
FROM 成绩表 as c
INNER JOIN 课程表 as b ON c.课程编号 = b.课程编号
INNER JOIN 学生表 as a on c.学生编号 = a.学生编号
GROUP BY c.学生编号,a.学生姓名,b.课程名
HAVING count(c.课程编号) = (select count(*) from 课程表)
declare @student table(学生编号 int,学生名 varchar(10))
insert @student
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五'
declare @course table(课程编号 int,课程名 varchar(10))
insert @course
select 1,'语文' union all
select 2,'数学' union all
select 3,'英语' union all
select 4,'物理'
declare @score table(学生编号 int,课程编号 int, 成绩 int)
insert @score
select 1,1,80 union all
select 2,1,80 union all
select 3,1,80 union all
select 3,2,80 union all
select 3,3,80 union all
select 3,4,80 SELECT a.学生名,b.课程名,c.成绩
FROM @score as c
INNER JOIN @course as b ON c.课程编号 = b.课程编号
INNER JOIN @student as a on c.学生编号 = a.学生编号
WHERE (select count(课程编号) from @score where 学生编号 = c.学生编号) = (select count(DISTINCT 课程编号) from @course)/*结果
学生名 课程名 成绩
---------- ---------- -----------
王五 语文 80
王五 数学 80
王五 英语 80
王五 物理 80
*/