我在下面有一个查询,用户可以在其中输入问题中的术语,并输出包含该术语的问题,并显示与该问题的答案,选项类型,答复类型等相关的信息。

下面是查询:

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”,这意味着“问题”表中包含SessionId的“ AAA”的所有相应行都将被删除。但只要意识到,相应的答案也会如此。

我需要以某种方式提供帮助,以某种方式存储先前的问题及其详细信息(答案,答复类型,选项类型)等,以便即使由于删除了会话而删除了问题和答案,老师也可以通过一些方式选择存储在某处的问题,以便教师仍可以选择这些问题及其相关答案,选项类型,答复类型等。

最佳答案

快速射击...您可以更改会话表的结构并添加bool字段,比如说“活动”。然后,对该表运行查询,并将active设置为TRUE。
而且,不要删除会话,只需将值更改为非活动即可。因此,下次需要时,只需检查active = TRUE。

08-25 12:59