Mysql 几乎无限列
我想创建不同的问题集并存储答案 这就是我试过的 表格问题 身份证,姓名 表格字段 标识 表关系 id,问题id,字段id 这非常有效,但仅适用于问题的显示部分 但是存储答案呢?我不能水平存储答案,因为我没有引用(列名称),垂直存储对数据库非常不利,对吗Mysql 几乎无限列,mysql,database-design,Mysql,Database Design,我想创建不同的问题集并存储答案 这就是我试过的 表格问题 身份证,姓名 表格字段 标识 表关系 id,问题id,字段id 这非常有效,但仅适用于问题的显示部分 但是存储答案呢?我不能水平存储答案,因为我没有引用(列名称),垂直存储对数据库非常不利,对吗 我正在使用mysql。最好的方法是什么?谢谢 您只需再添加一个表来存储答案: question_id PK INT user_id PK INT <-- or maybe anything that identifies
我正在使用mysql。最好的方法是什么?谢谢 您只需再添加一个表来存储答案:
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
要返回特定用户的结果,请执行以下操作:
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}
当然,您必须进一步处理结果。简单
您只需要另一个表来存储答案:
答案
身份证
问题编号
字段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 question_id={question id here}