某考試系統有3個表,A表保存正確答案,B表保存用戶輸入的答案,C表保存各題的分值
現在要用B表去對應A表,如果答案相同,那么得出相應的分數,最后得出總分
請問sql該怎么寫?
uj5u.com熱心網友回復:
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表.題號
uj5u.com熱心網友回復:
while 遍歷參加考試的考生begin
while 回圈當前考生的答案B表
begin
if 當前作答題目的答案正確答案比較 then
寫入該考生作答題目得分(全得分、部分得分、0分)
next 下一作答題
end
Next 下個考生
end
uj5u.com熱心網友回復:
--題目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;
uj5u.com熱心網友回復:
一般應該有 人員表,考試表,人-考試表,考試-試題表(標準答案、分值),人-考試-答案表沒給出表結構,只能各自想象了
uj5u.com熱心網友回復:
2樓正確答案,給分吧uj5u.com熱心網友回復:
新建一個item 為id 查看比對相同id的 正確答案和用戶輸入的答案 比對結果就可以了uj5u.com熱心網友回復:
這個簡單了。新建個臨時表。用戶,題號,正確答案,填寫答案,分值。然后求總就行了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114601.html
標籤:數據庫相關
