| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4116 人关注过本帖, 1 人收藏
标题:求sql语句:多表联查。学生、教师、班级、课程、排课计划、成绩
只看楼主 加入收藏
pingzilu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-5-15
收藏(1)
 问题点数:0 回复次数:8 
求sql语句:多表联查。学生、教师、班级、课程、排课计划、成绩
一共6个表,希望有好心人,慢慢看看,给个解决方法。谢谢了。我尽量写得明了……

教师表:
teaid (主键)| teaname

班级表:
clsid (主键) | clsname

学生表:
stuid (主键)| stuname | clsid(与班级表外键关联)

课程表:
couid (主键)| couname

排课计划表:(==就是哪个教师教哪个班的哪个课程==)
planid (主键)| classid (与班级表外键关联)| teaid (与教师表外键关联)| couid(与课程表外键关联)

成绩表:
scorid (主键)| stuid(与学生表外键关联) | planid(与排课计划表外键关联) | score(成绩,分数)

数据表的结构如上,应该说清楚了。我的问题是:现在要查看学生的成绩信息,要求显示学生的学号、姓名、班级、每一课程的名称、分数、任课教师!我觉得太复杂了。怎么也想不怎么写语句。所以,来这里求救了。谢谢大家,谢谢细心人!
搜索更多相关主题的帖子: 课程 sql 语句 联查 教师 
2008-05-29 15:55
provoke
Rank: 2
来 自:广州
等 级:新手上路
威 望:5
帖 子:175
专家分:0
注 册:2007-6-14
收藏
得分:0 
select stu.stuid as 学号,stuname as 姓名,clsname as 班级,couname as 课程,score as 分数,teaname as 任课教师
from 教师表 as tea,班级表 as cla,学生表 as stu,课程表 as cou,排课计划表 as pla,成绩表 as sco
where sco.stuid=stu.stuid and sco.planid=pla.planid and pla.classid=cla.clsid and pla.teaid=tea.teaid and pla.couid=cou.couid and stu.clsid=cla.clsid

学号   姓名     班级     课程         分数          任课教师   
---- ------ ------ ---------- ----------- ------
ST1  学生1    班级1    课程1        60          教师1
ST1  学生1    班级1    课程2        65          教师2
ST1  学生1    班级1    课程3        70          教师3
ST2  学生2    班级2    课程1        75          教师1
ST2  学生2    班级2    课程2        80          教师2
ST2  学生2    班级2    课程3        85          教师3
ST3  学生3    班级3    课程1        90          教师1
ST3  学生3    班级3    课程2        95          教师2
ST3  学生3    班级3    课程3        100         教师3

3个班级,每个班1个学生,共3个学生;
3名教师,每名教师只教授1门课程;
3门课程,每门课程只由1名教师授课;
每名教师分别教3个班同一门课程,共9条排课计划;
所以,每个学生3门课程,共9条成绩记录。

班级表
clsid clsname
----- -------
CL1   班级1
CL2   班级2
CL3   班级3

学生表
stuid stuname clsid
----- ------- -----
ST1   学生1     CL1
ST2   学生2     CL2
ST3   学生3     CL3

教师表
teaid teaname
----- -------
te1   教师1
te2   教师2
te3   教师3


课程表
couid couname   
----- ----------
CO1   课程1
CO2   课程2
CO3   课程3

排课计划表
planid classid teaid couid
------ ------- ----- -----
PL1    CL1     TE1   CO1
PL2    CL1     TE2   CO2
PL3    CL1     TE3   CO3
PL4    CL2     TE1   CO1
PL5    CL2     TE2   CO2
PL6    CL2     TE3   CO3
PL7    CL3     TE1   CO1
PL8    CL3     TE2   CO2
PL9    CL3     TE3   CO3

成绩表
scorid stuid planid score      
------ ----- ------ -----------
SC1    ST1   PL1    60
SC2    ST1   PL2    65
SC3    ST1   PL3    70
SC4    ST2   PL4    75
SC5    ST2   PL5    80
SC6    ST2   PL6    85
SC7    ST3   PL7    90
SC8    ST3   PL8    95
SC9    ST3   PL9    100

爱我至爱,至死不渝!
2008-05-31 00:03
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
LS的是交叉查询,我觉得用内连接查询效率会更好
2008-05-31 00:54
provoke
Rank: 2
来 自:广州
等 级:新手上路
威 望:5
帖 子:175
专家分:0
注 册:2007-6-14
收藏
得分:0 
交叉查询只列出满足条件的记录,内连接查询会列出所有记录,并且不匹配的列显示为空。用什么查询都一样,看实际需要而已。

爱我至爱,至死不渝!
2008-05-31 15:14
pingzilu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-5-15
收藏
得分:0 
回复 2# provoke 的帖子
谢了谢了,真是好心人啊。
2008-06-03 12:32
天下云
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-11-6
收藏
得分:0 
效果都一样..

数据量 不大     实用就行啦...

看样子也是初学者...   简单理解就行

2008-07-09 17:41
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
收藏
得分:0 
sql查询求救
我建有一个表,内部有很多字段,因为有很多条记录有相同提交的部分嘛,比方说我有个name字段,pronumber字段,现在就是有个相同的公司就是name字段相同的,但是pronumber字段也相同的两行数据,但是就是他们的时间不同,现在要取出时间更后的那行数据怎么弄?谢谢,具体点还有以下:


name       pronumber        data  

新浪公司     0000105        1987-04-06 09:08:56
新浪公司     0000105        1988-03-01 13:20:05

那现在就是取出下面这行数据出来怎么弄???

[[it] 本帖最后由 wxm198427 于 2008-8-15 14:59 编辑 [/it]]
2008-08-15 14:54
qazzwj
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-16
收藏
得分:0 
交叉查询 至少在微软的SQL server 2005(也许在SQL server 2008中就不再支持) 以后不被支持,所以兄弟们还是使用标准的连接查询吧
2008-08-16 16:06
语虫
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2008-5-18
收藏
得分:0 
顶一下@
2008-08-18 14:27
快速回复:求sql语句:多表联查。学生、教师、班级、课程、排课计划、成绩
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028972 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved