另开一贴继续请教 这样的SQL该如何写?(50分)

  • 主题发起人 主题发起人 sxbug
  • 开始时间 开始时间
S

sxbug

Unregistered / Unconfirmed
GUEST, unregistred user!
我的库结构是这样的:
学生库:
学号 姓名 班级 年龄 专业 系 家庭住址
--------------------------------------------------
01 张三 9901 20 电器 电子 湖南
02 立嗣 9901 19 电器 电子 湖北

成绩库:
学号 学期 年级 课程号 成绩 班级排名 年级排名
--------------------------------------------------
01 1 2 003 86 5 10
01 1 2 006 90 2 7
01 1 2 010 81 9 20

课程库:(对应课程编号和名称)
课程号 课程名称
--------------------
001 语文
002 数学
003 地理
004 历史
005
006 物理

学期开课计划库:(在这个库里可以知道某一个班一个学期开了哪些课)
课程编号 学期 年级 班级 学时数 任课老师 考试方式
-------------------------------------------------------------------
001 1 1 9901 30 张九 考试
002 1 1 9901 38 王沪 考查
006


我现在想用query连接这些表,在dbgrid里面显示(指定对一个班一个学期进行统计):

学号 姓名 课程名 成绩 课程名 成绩 课程名 成绩... 总分 平均分 总分排名
-----------------------------------------------------------------------------------------
01 张三 语文 70 数学 90 物理 97 ...(可能有多门) 257 85.6 7
... ...

课程数目由学生本学期 开课数目 决定。
总分 和 平均分 也作为2门课程类似处理,入库。
从表面上看:相当于将成绩库里面的部分纪录,竖放的变成横放,并且作统计。这用sql该如何实现?

望高人指点!!提供些思路也可以。
 
先写出sql语句,然后用个统计魔方(决策立方)
 
无法用一个语句完成
可以先查询出结果 学好 课程 成绩 至临时表中
再建数据集用循环语句一格一格的填充
 
我想先用一个sql将这个班的课程名都得到,然后再查询成绩并作统计。
可语句怎么写,我还没有结果,望高手们指教
另开贴的目的只是想提高分数
:)
 
select * from 课程 ,学期开课计划库 where 学期开课计划库.课程编号=课程.课程号
学期开课计划库.班级=‘:班级 ’

就可以搞定课程名了,但如果这个班的学生还能自由选择其他课程就不能这样了
 
关键是找出来课程名以后的sql如何实现
:)
 
这个查询要用SQL交叉表查询及SQL子查询,

我是初学,帮不了你,我给你介绍一个地方,

就是http://csdn.net,那里有很多数据库方面的高手,我在那儿得了很多次帮助。
 
我想一两条语句不太可能解决
你可以用存储过程和游标来处理
1。用一个查询得到某学其的所有课程
2。利用1。所得结果再建立临时表,表结构就是你最终所要的信息。
3。建立游标,利用它得到某一学期所有课程的成绩
4。循环游标,把成绩写入临时表
5。查询临时表
主要就是这几步了
有不懂的可以给我发信息!
QQ:7552667
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部