Php 将错误问题和答案的统计信息保存到数据库
我正在做一个问答游戏,我想对回答错误的问题进行统计 我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的备选方案),游戏(每个游戏会话的统计数据) 现在我正在考虑两种替代方法来解决这个问题Php 将错误问题和答案的统计信息保存到数据库,php,mysql,Php,Mysql,我正在做一个问答游戏,我想对回答错误的问题进行统计 我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的备选方案),游戏(每个游戏会话的统计数据) 现在我正在考虑两种替代方法来解决这个问题 将每个问题ID保存到数组中,然后保存数组 游戏结束时,在MySQL中创建一条记录 针对每个错误,在表中插入一条带有问题ID的新记录 回答 以下哪个选项是解决我的问题的最佳方法?如果我是正确的,当我查询数据库以显示回答错误的问题时,最后一个问题会更容易。如有任何意见或建议,将不胜感激 我不确定我是否正
以下哪个选项是解决我的问题的最佳方法?如果我是正确的,当我查询数据库以显示回答错误的问题时,最后一个问题会更容易。如有任何意见或建议,将不胜感激 我不确定我是否正确理解了你的问题。如果您需要每个问题/答案的详细信息,以下是答案表统计的可能解决方案:
CREATE TABLE GAME_STATS (ID INT NOT NULL, ID_QUEST INT, ID_ANSWER INT, NUM INT);
ID是一个序列(你可以省略它,让PK ID\u任务,ID\u答案)
ID_QUEST指的是表格问题的ID
ID\u答案是指表格答案的ID。
NUM是选择答案的次数
你可以考虑为所有可能的问题/答案预先填充表格(num=0)。
在每个答案的末尾,您应该更新ID_任务、ID_答案的NUM(+1)
如果要为每个会话/用户注册统计信息,则应添加适当的列(例如id\u session和/或user\u id)。
在这种情况下,不能预填充表。您只能注册错误的答案。我的建议是将给出的每个答案保存到单独的一行中,完全按照您所述的原因。查询这样的结构要比将多个答案存储在一行中容易得多 我将按如下方式组织表格
Question
ID | Text | whatever else you may need
Answer
ID | QuestionID | Text | IsCorrect | whatever else you may need
Game
ID | User | StartTime | EndTime | whatever else you may need
Stats
ID | GameID | QuestionID | AnswerID | AnswerTime | whatever else you may need
这需要根据您计划对其进行的分析类型进行调整,但您得到了这个想法
计算一个错误答案被给出的次数非常简单
select t1.ID, count(*)
from Answer t1
join Stats t2
on t1.ID = t2.AnswerID
where t1.IsCorrect = 'N'
group by t1.ID
我会选择2,但我不会为每一个错误的答案创造新的记录。相反,我只是将错误回答的问题插入一个由逗号分隔的字段中。这样可以保存行。