我如何存储订单

时间:2014-01-08 19:23:48

标签: mysql

我有问卷表和问题表。

我需要在问卷中记录问题的顺序,可能还需要另一张表。

示例:

问卷可能会显示问题42,然后是56,然后是14

另一份调查问卷可能会记录问题34,67,56,27

多份问卷使用的问题相同。

问卷

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(255)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(255) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

问题

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(255)     | NO   | PRI | NULL    | auto_increment |
| question | varchar(255) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

2 个答案:

答案 0 :(得分:1)

你可能想要问题和调查问卷之间的M:M关系表,可能是问题和问卷调查表的fk,以及数字问题的列。这样,您可以找到每个问卷ID的问题,并按问题编号排序,并加入问题表。

答案 1 :(得分:1)

我建议您创建第三个表格,将问题与调查问卷联系起来。像这样:

<强> questionnaire_link

questionnaire_id    question_id    sortOrder
       1                42            1
       1                56            2
       1                14            3
       2                34            1
       2                67            2
       2                56            3
       2                27            4

(确保在此表中添加索引)

然后你可以像这样进行查询以获得所有问题:

SELECT question.name FROM question
JOIN questionnaire_link ON question.id = questionnaire_link.question_id
WHERE questionnaire_link.questionnaire_id = 1