【问题标题】:A database table is not associated with any other table数据库表不与任何其他表关联
【发布时间】:2012-10-19 22:15:14
【问题描述】:

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

下面是查询:

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 Table 来搜索以前的问题。所以我需要更改上面的查询虽然最大的问题是该表没有链接到任何其他表,这意味着我将如何能够检索它的正确答案、回复类型、选项类型等?这是我的问题。

有什么帮助吗?

编辑:

以下是其他表格:

问题表

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" 的所有相应行都将被删除。但刚刚意识到相应的答案也会如此。

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

【问题讨论】:

  • 读了3遍,还是没明白你的问题。您介意解释一下不同表格中的内容吗?
  • @BurninLeo Lemme 编辑问题并向您展示其他表格详细信息。给我5分钟
  • 如果您想要以前的问题,为什么要删除它们?
  • @davidstrachan 问题在于,如果删除考试(会话),则与该考试相关的所有内容都将从数据库中删除,这意味着不会显示这些考试中的任何问题。现在,如果我不删除与已删除考试相关的相关问题和答案,问题是,该 sessionId 可以在将来使用,然后大问题是我可以在“问题”表中有重复项,因为我将拥有相同的 sessionId(考试名称)和相同的 QuestionId(问题编号)。这两个字段都是“问题”表中的主键
  • 只是我对 mySQL 缺乏了解,还是非聚合列仍然包含“随机”结果(尽管存在 ORDER BY)?

标签: php mysql sql database mysqli


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2018-09-30
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2011-12-09
    相关资源
    最近更新 更多