DBテーブル構造:
セッションテーブル(別名試験テーブル)
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
SQL FiddlewithDemoを参照してください
これにより、次の結果が返されます。
| 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 |