1

我想创建不同的问题集并存储答案

这是我试过的

表问题 ID、名称

表字段 id、标签

表关系 id、question_id、field_id

这很好用,但仅适用于问题的显示部分,但是存储答案呢?我无法水平存储答案,因为我没有参考(列名),垂直存储对数据库非常不利,对吧?

我正在使用 mysql。最好的方法是什么?谢谢!

4

2 回答 2

2

您可以再添加 1 个表来存储答案:

question_id  PK   INT
user_id      PK   INT <-- or maybe anything that identifies the user
field_id     PK   INT
answer            VARCHAR <-- or TEXT , depends on your usage

返回所有结果(假设答案表命名为tbl_answer):

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 

返回特定用户的结果:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE user_id={user id here}

要返回特定问题的结果:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE question_id={question id here}

当然,您必须对结果进行进一步处理。

于 2013-04-03T02:43:29.217 回答
1

简单的。

您只需要另一个表来存储答案:

答案

id question_id field_id(答案)

您可能还需要一个字段来将您的“答案”与某事相关联,例如正在回答的人或问卷。

于 2013-04-03T02:43:36.213 回答