数据库表未与任何其他表关联

时间:2012-10-19 22:15:15

标签: php mysql sql database mysqli

我在下面有一个查询,其中用户将从问题中输入一个术语,并且它将输出包含该术语的问题,并且随之显示,它将显示与其答案的问题,其选项类型,它的回复类型等。

以下是查询:

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"被删除,这意味着所有相应的行包含" AAA" for SessionId in" Question"表格将被删除。但只是意识到相应的答案也是如此。

我需要帮助以某种方式设置一些内容,它将存储以前的问题及其详细信息(答案,答复类型,选项类型)等,以便即使问题和答案被删除,因为他们的会话已被删除,那么老师有些人可以选择那些存储在某处的问题,以便教师仍然可以选择这些问题及其相关答案,选项类型,回复类型等。

1 个答案:

答案 0 :(得分:1)

快速拍摄...您可以更改会话表的结构并添加一个布尔字段,让我们说“活动”。然后,对该表运行查询,并将active设置为TRUE。 而且,不要删除会话,只需将值更改为非活动状态。因此,下次需要时,只需检查active = TRUE。