【发布时间】:2012-12-19 05:56:30
【问题描述】:
数据库表结构:
会话表(又名考试表)
SessionId(auto) SessionName
137 XULWQ
问题表:
SessionId QuestionId OptionId
137 1 5
137 2 2
Option_Table 表:
OptionId OptionType
1 A-C
2 A-D
3 A-E
4 A-F
5 A-G
6 A-H
7 A-I
8 A-J
9 A-K
10 A-L
11 A-M
12 A-N
13 A-O
14 A-P
15 A-Q
16 A-R
17 A-S
18 A-T
19 A-U
20 A-V
21 A-W
22 A-X
23 A-Y
24 A-Z
25 True or False
26 Yes or No
答案表:
AnswerId(auto) SessionId QuestionId Answer
200 137 1 B
201 137 1 D
202 137 2 F
203 137 2 A
204 137 2 C
我想创建一个页面来显示每个问题的错误答案。
我正在考虑通过检索每个问题的选项类型来做到这一点,显示属于该选项类型的所有字母答案,然后从字母答案中删除正确答案,以便只留下不正确的答案。
选项数组:
$option = array();
$option[1]= array(A,B,C);
$option[2]= array(A,B,C,D);
$option[3]= array(A,B,C,D,E);
...
$option[23]= array(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y);
$option[24]= array(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z);
$option[25]= array(True,False);
$option[26]= array(Yes,No);
我的问题是在本节之后我需要帮助。我如何使用 mysqli/php 和我目前拥有的数据库在这个数组之后开始检索错误的答案?
更新:
下面显示了显示每个问题正确答案的 sql:
SELECT
q.QuestionContent,
o.OptionType,
q.NoofAnswers,
GROUP_CONCAT(DISTINCT Answer ORDER BY Answer SEPARATOR '') AS Answer,
r.ReplyType,
q.QuestionMarks
FROM Question q
LEFT JOIN Answer an
ON q.QuestionId = an.QuestionId
LEFT JOIN Reply r
ON q.ReplyId = r.ReplyId
LEFT JOIN Option_Table o
ON q.OptionId = o.OptionId
group by q.QuestionContent
这会返回结果:
| QUESTIONCONTENT | OPTIONTYPE | NOOFANSWERS | ANSWER | REPLYTYPE | QUESTIONMARKS |
----------------------------------------------------------------------------------------
| Name these 2 flowers | A-F | 2 | C | Multiple | 5 |
| What is 2+2? | A-D | 1 | ABD | Single | 5 |
【问题讨论】:
-
function allowed_in中有什么内容? -
你怎么知道一个问题的正确答案是什么?
-
@BarryChapman 通过从答案表中选择,啊,我忘了发布查询来检查,请给我一点时间来包括这个
-
你能发布你用来收集结果的 SQL 吗?您是否将正确答案存储在数据库中?
-
以这种方式使用 GROUP_CONCAT() 不适用于 True/False 和 Yes/No 问题。