请问一个sql该怎么写

月光 2014-02-28 09:28:48
某考试系统有3个表,A表保存正确答案,B表保存用户输入的答案,C表保存各题的分值

现在要用B表去对应A表,如果答案相同,那么得出相应的分数,最后得出总分

请问sql该怎么写?
...全文
221 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
沉序员 2014-03-04
  • 打赏
  • 举报
回复
这个简单了。新建个临时表。用户,题号,正确答案,填写答案,分值。然后求总就行了
Delphi小叮当 2014-03-04
  • 打赏
  • 举报
回复
新建一个item 为id 查看比对相同id的 正确答案和用户输入的答案 比对结果就可以了
张得一 2014-03-01
  • 打赏
  • 举报
回复
2楼正确答案,给分吧
volte 2014-02-28
  • 打赏
  • 举报
回复
while 遍历参加考试的考生 begin while 循环当前考生的答案B表 begin if 当前作答题目的答案正确答案比较 then 写入该考生作答题目得分(全得分、部分得分、0分) next 下一作答题 end Next 下个考生 end
zbdzjx 2014-02-28
  • 打赏
  • 举报
回复
A表:题号、正确答案 B表:题号、用户输入答案 C表:题号、分值
select A表.题号, case when A表.正确答案 = B表.用户输入答案 then C表.分值 else 0 end 分值
from A表
left join B表 on A表.题号 = B表.题号
left join C表 on A表.题号 = C表.题号
haitao 2014-02-28
  • 打赏
  • 举报
回复
一般应该有 人员表,考试表,人-考试表,考试-试题表(标准答案、分值),人-考试-答案表 没给出表结构,只能各自想象了
simonhehe 2014-02-28
  • 打赏
  • 举报
回复
--题目ID, 正确答案
Create Table A(ID int, Answer varchar(50));
insert into A select 1, 'a';
insert into A select 2, 'a';
insert into A select 3, 'a';

--题目ID, 用户ID, 用户答案
Create Table B(ID int, UserID int, Answer varchar(50));
insert into B select 1, 1, 'a';
insert into B select 2, 1, 'b';
insert into B select 3, 1, 'a';

insert into B select 1, 2, 'a';
insert into B select 2, 2, 'a';
insert into B select 3, 2, 'a';

--题目ID, 分值
Create Table C(ID int, Point int);
insert into C select 1, 1;
insert into C select 2, 2;
insert into C select 3, 3;

--用户1
select b.userid, sum(c.point) as point
from b
left join a on b.ID = a.id and b.answer = a.answer
left join c on a.ID = c.id
where b.userid = 1
group by b.userid;

--用户2
select b.userid, sum(c.point) as point
from b
left join a on b.ID = a.id and b.answer = a.answer
left join c on a.ID = c.id
where b.userid = 2
group by b.userid;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧