建立视图解决有3张表
表结构如下
第一张表 ExamPager (试卷表) 列 类型 注释
[ExamID] [nvarchar](15) 试卷ID
[Title] [nvarchar](50) 试卷名称
[TotalScore] [int] 试卷总分
[CreateMan] [nvarchar](30) 创建人
[CreateDate] [datetime] 创建时间
[ModifyBy] [nvarchar] 修改人
[ModifyDate] [nvarchar] 修改日期
[State] [bit] 状态
[Note] [nvarchar](100) 备注
第二张表 StuASVAnswer 主观题表 用于存放每一道主观题 和 学生得分列名 类型 注释
[ID] [int] 序列号
[StuID] [nvarchar](30) 学生ID
[ExamID] [nvarchar](15) 试卷ID
[SubjectID] [int] 试题ID
[KnowID] [int] 知识点ID
[FactScore] [float] 分数
第三张表 StuVKGAnswer 客观题表 用于 存放 试卷中的 每 一 道 客 观题题 和 学生得分列名 类型 注释
[ID] [int] 序列号
[StuID] [nvarchar](30) 学生ID
[ExamID] [nvarchar](15) 试卷ID
[SubjectID] [int] 题目ID
[StuAnswer] [nvarchar](10) 答案
[FactScore] [float] 分数
[Note] [nvarchar](100) 备注3张表之间的关系试卷总分=客观题分数+主观题分数要求:根据 学生ID 求该学生的 考试试卷的 其中学生为多个学生 因为是用学生ID 做条件 所以就不用建立学生表了 只需要在客观和主观题中 对应即可 试卷为多张~~试卷编号 试卷名称 试卷总分数 学生总分数 学生排名
表结构如下
第一张表 ExamPager (试卷表) 列 类型 注释
[ExamID] [nvarchar](15) 试卷ID
[Title] [nvarchar](50) 试卷名称
[TotalScore] [int] 试卷总分
[CreateMan] [nvarchar](30) 创建人
[CreateDate] [datetime] 创建时间
[ModifyBy] [nvarchar] 修改人
[ModifyDate] [nvarchar] 修改日期
[State] [bit] 状态
[Note] [nvarchar](100) 备注
第二张表 StuASVAnswer 主观题表 用于存放每一道主观题 和 学生得分列名 类型 注释
[ID] [int] 序列号
[StuID] [nvarchar](30) 学生ID
[ExamID] [nvarchar](15) 试卷ID
[SubjectID] [int] 试题ID
[KnowID] [int] 知识点ID
[FactScore] [float] 分数
第三张表 StuVKGAnswer 客观题表 用于 存放 试卷中的 每 一 道 客 观题题 和 学生得分列名 类型 注释
[ID] [int] 序列号
[StuID] [nvarchar](30) 学生ID
[ExamID] [nvarchar](15) 试卷ID
[SubjectID] [int] 题目ID
[StuAnswer] [nvarchar](10) 答案
[FactScore] [float] 分数
[Note] [nvarchar](100) 备注3张表之间的关系试卷总分=客观题分数+主观题分数要求:根据 学生ID 求该学生的 考试试卷的 其中学生为多个学生 因为是用学生ID 做条件 所以就不用建立学生表了 只需要在客观和主观题中 对应即可 试卷为多张~~试卷编号 试卷名称 试卷总分数 学生总分数 学生排名
select IDENTITY(int,1,1) as ID_Num,t.ExamID,t.FactScore into #FactScore
from (select distinct
E.ExamID,
(A.FactScore + V.FactScore) as FactScore
from ExamPager E, StuASVAnswer A, StuVKGAnswer V
where E.ExamID = A.ExamID
and E.ExamID = V.ExamID
order by E.ExamID,学生总分数 desc) t
select
C.ExamID as 试卷编号,
C.Title as 试卷名称,
C.TotalScore as 试卷总分数,
F.FactScore as 学生总分数
(F.ID_Num - min(F.ID_Num) + 1)
as 学生排名
from #FactScore F ,(select E.ExamID,
E.Title,
E.TotalScore,
(A.FactScore + V.FactScore) as FactScore
from ExamPager E, StuASVAnswer A, StuVKGAnswer V
where E.ExamID = A.ExamID
and E.ExamID = V.ExamID) C
where F.ExamID = C.ExamID
and F.FactScore = C.FactScore
group by 试卷编号,试卷名称,试卷总分数,学生总分数
from (select distinct
E.ExamID,
(A.FactScore + V.FactScore) as sumScore
from ExamPager E, StuASVAnswer A, StuVKGAnswer V
where E.ExamID = A.ExamID
and E.ExamID = V.ExamID
and E.StuID = V.StuID
order by E.ExamID,sumScore desc) t
select
C.ExamID as 试卷编号,
C.Title as 试卷名称,
C.TotalScore as 试卷总分数,
F.sumScore as 学生总分数
(F.ID_Num - M.minNum + 1) as 学生排名
from #FactScore F ,
(select E.ExamID,
E.Title,
E.TotalScore,
(A.FactScore + V.FactScore) as sumScore
from ExamPager E,
StuASVAnswer A,
StuVKGAnswer V
where E.ExamID = A.ExamID
and E.ExamID = V.ExamID) C,
(select min(ID_Num) as minNum,
ExamID
from #FactScore
group by ExamID) M
where F.ExamID = C.ExamID
and F.ExamID = M.ExamID
and F.sumScore = C.sumScore
不过还不清楚楼主的目的啊
就是根据学生ID找出这个学生考过的试卷?
这样的话直接
select * from ExamPager where ExamID in(select ExamID from StuASVAnswer where StuID=1 union select ExamID from StuVKGAnswer where StuID=1)
可以不?
你要学生表啊 随便整一个··ID 学生ID
name 学生名字完了··