1

2つのテーブルがあり、データを管理するためのテーブルを作成しようとしています。

最初の表は「質問」です。

questions (question_id, key1, key2, key3, key4, user_id, creation_date, class, type     permission)

およびその他:

questions_keys (question_key_id, question_key_name, question_key_refers_to)

テーブルquestion_keysに保存されている送信ボタンを押すたびに、4つのレコードと1つの質問テーブルがあります。ここに例があります:

question_keys:

1, mathematics, 0
2, history, 1
3, physics, 2
4, geography, 3

と質問表:

(1, 1, 2, 3, 4, 8, 2012-12-19 20:41:48, 4, multiple_choice,     0)

必要なクエリ:テーブルにquestion_key_nameを表示します。ここで、テーブルの質問のkey1、key2、key3、key4はquestion_key_idと同じです。

次のようなものを1行に表示します。

mathematics, history, physics, geography, multiple_choice, 2012-12-19 20:41:48

私は新しく、あなたの助けが必要です..どうもありがとう!

4

2 に答える 2

2

これを試して:

SELECT qk1.question_key_name qk2.question_key_name, qk3.question_key_name, 
       qk4.question_key_name, q.type, q.creation_date 
FROM questions q 
INNER JOIN question_keys qk1 ON q.key1 = qk1.question_key_id 
INNER JOIN question_keys qk2 ON q.key2 = qk2.question_key_id 
INNER JOIN question_keys qk3 ON q.key3 = qk3.question_key_id 
INNER JOIN question_keys qk4 ON q.key4 = qk4.question_key_id;
于 2012-12-20T16:56:13.810 に答える
1

この設計では、テーブルを4回結合する必要があります。

SELECT question_key_name
FROM question_key qk
JOIN questions q on q.key1 = qk.question_key_id
WHERE q.question_id = ?

次に、他の3つについて繰り返します。それらをすべて一緒にUNIONすると、4行が返されます。

1行のみを返す場合は、GROUP_CONCATを確認してください。ただし、これにより、question_key_nameの値が1つの列として返されます。アプリコードで4行を組み合わせた方がよい場合があります。

于 2012-12-20T16:49:51.047 に答える