数据库关联查询

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:18:02
创建三个表
表一:学生基本信息(编号,姓名,性别,出生日期,所在班级)
表二:课程表(编号,课程名称)
表三:成绩表(编号,学生标号,课程标号,成绩)
课程表里面包含语文,数学,英语三行记录

在前面三个表的基础,进行以下查询

查询出某个班级的学生考试成绩,输出的列包括

学生编号,学生姓名,语文成绩、数学成绩、英语成绩

老师给的练习题,求大侠解

SELECT S.编号,S.姓名,K.课程名称,C.成绩
FROM 学生基本信息表 S,成绩表 C,课程表 K
WHERE S.编号 = C.学生标号
AND C.课程标号 = K.编号
AND S.班级 = '某个班级'
AND K.课程名称 IN ('语文','数学','英语');

select 学生编号,学生姓名,max(语文成绩) 语文成绩,
max(数学成绩) 数学成绩 ,max(英语成绩) 英语成绩
from
(
select a.编号 as 学生编号,a.姓名 as 学生姓名,
case c.课程名称 when '语文' then b.成绩 else '' end as 语文成绩,
case c.课程名称 when '数学' then b.成绩 else '' end as 数学成绩,
case c.课程名称 when '英语' then b.成绩 else '' end as 英语成绩
from 学生基本信息 a inner join
成绩表 b on b.学生标号=a.编号 inner join
课程表 c on c.课程标号=b.编号
) t
group by 学生编号,学生姓名