1

さまざまな質問セットを作成し、回答を保存したい

これは私が試したものです

表の質問 ID、名前

テーブル フィールド ID、ラベル

テーブル関係 ID、質問 ID、フィールド ID

これはうまく機能しますが、質問の表示部分のみですが、回答の保存はどうですか? 参照(列名)がないため、回答を水平方向に保存できません。また、垂直方向はデータベースにとって非常に悪いのでしょうか?

私はmysqlを使用しています。これを行う最良の方法は何ですか?どうも!

4

2 に答える 2

2

answer を保存するテーブルを 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 (回答)

「回答」を人や回答中のアンケートなどに関連付けるために、おそらくもう 1 つのフィールドも必要になるでしょう。

于 2013-04-03T02:43:36.213 に答える