0

以下に、ユーザーが質問から用語を入力し、その用語を含む質問を出力するクエリがあります。これにより、回答の質問、オプションタイプ、応答タイプなどに関連付けられて表示されます。

以下はクエリです:

SELECT DISTINCT q.QuestionContent, o.OptionType, q.NoofAnswers, 
                GROUP_CONCAT(DISTINCT Answer SEPARATOR '') AS Answer, 
                r.ReplyType, q.QuestionMarks, q.SessionId   
FROM Answer an    
JOIN Question q 
ON q.QuestionId = an.QuestionId 
AND an.SessionId = q.SessionId   
JOIN Reply r 
ON q.ReplyId = r.ReplyId    
JOIN Option_Table o 
ON q.OptionId = o.OptionId 
WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
GROUP BY an.SessionId, an.QuestionId

CRONを使用すると、毎年以前の試験(SessionId)が削除されるため、ユーザーがユーザーを検索するためにこれらの質問が表示されないことがわかりました。

だから私がやりたかったのは、以前のすべての質問を格納するテーブルを設定することでした。テーブルは次のとおりです。

Previous_Question Table:

PreviousId (auto) PreviousContent
1                 What is 2+2? 
2                 What is 4+4 and 3+3?
3                 What is square root of 144?

したがって、Previous_Questionテーブルを使用して、前の質問を検索できるようにします。したがって、上記のクエリを変更する必要があります。最大の問題は、このテーブルが他のテーブルにリンクされていないことです。つまり、正しい回答、応答タイプ、オプションタイプなどをどのように取得できるのでしょうか。これが私の問題です。

何か助けはありますか?

編集:

以下は他の表です:

質問表

SessionId QuestionId  QuestionContent             NoofAnswers ReplyId QuestionMarks OptionId
AAA       1           What is 2+2?                  1          1          5         2
AAA       2           What is 4+4 and 3+3?          1          2          5         3
ABC       3           What is square root of 144?   1          1          7         5

回答表:

AnswerId(auto) SessionId QuestionId  Answer
1              AAA       1           B
2              AAA       2           A
3              AAA       3           D
4              ABC       1           A

返信表:

ReplyId ReplyType
1       Single
2       Multiple

オプションテーブル:

OptionId  OptionType
1         A-C
2         A-D
3         A-E
4         A-F
5         A-G

ここで、SessionId "AAA"が削除されたとしましょう。つまり、"Question"テーブルのSessionIdの"AAA"を含む対応するすべての行が削除されます。しかし、対応する答えもそうだと気づきました。

以前の質問とその詳細(回答、返信タイプ、オプションタイプ)などを保存する場所を設定して、セッションが削除されたために質問と回答が削除されても、教師が何らかの方法でできるようにする必要があります。教師がそれらの質問とそれに関連する回答、オプションタイプ、返信タイプなどを選択できるように、どこかに保存されている質問を選択します。

4

1 に答える 1

1

クイック ショット...セッション テーブルの構造を変更し、bool フィールドを追加することができます。たとえば、「アクティブ」としましょう。次に、そのテーブルに対してクエリを実行し、active を TRUE に設定します。そして、セッションを削除する代わりに、値を非アクティブに変更します。そのため、次回必要になったときに、active=TRUE かどうかを確認してください。

于 2012-10-20T00:29:53.553 に答える