现有三个表,学生表(学生编号,学生名),课程表(课程编号,课程名)和成绩表(学生编号,课程编号,成绩),现显示所有课程修完的学生姓名,课程名及成绩。
解决方案 »
- 餐饮收银系统的sql服务器问题
- ****************请教关于两个sql语句
- 在线求一sql语句的写
- ▲▲▲▲▲如何用SQL 语句在表table 中选定重复的 bianhao 字段内容???并列出▲▲▲▲▲
- sp_cursoropen, sp_cursorfetch, sp_cursorclose ????????
- 如何把这两列合并成一列smalldatetime字段?
- 求一sql的写法
- 郁悶,剛剛才知道自己的生日已經過去三天了。散分!!!
- 基于SQL Server建立的办公系统文档文件怎样存储?
- 我要执行一个可能会超过8000个字符的sql语句,怎样才能做到呢,高手请进
- 求一个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
*/