0

私は3つのテーブルを持っています:

tbl_question (id,question)
tbl_answer (id,answer)
question_has_answer (id,question_id,answer_id)

多対多の関連付けのように見えますが、実際には1対多のようにのみ使用されます(1つの質問には複数の回答がありますが、各回答は質問のみに属します)。したがって、次のように1番目と2番目のテーブルからフィールド(idを除く)を取得する必要があります。

Question1
      answer1
      answer2
      answer3
Question2
      answer5
      answer4

等々。

4

5 に答える 5

2

だろう:

SELECT question, answer
    FROM tbl_question q 
    INNER JOIN question_has_answer qha
    ON q.id = qha.question_id
    INNER JOIN tbl_answer a
    ON qha.answer_id = a.id
ORDER BY question,answer

また、テーブルquestion_has_answerにIDを使用する予定がない場合は、そのIDを使用しないことをお勧めします。

さらに、1つの回答が1つの質問にのみ関連付けられている場合は、question_has_answerを使用したり、tbl_answerを変更してquestionID列を追加したりしないでください。

于 2012-09-26T14:33:05.343 に答える
0

これを試してください。

SELECT  b.question, c.answer
FROM    question_has_answer a
        INNER JOIN tbl_question b
            ON a.question_ID = b.ID
        INNER JOIN tbl_answer c
            ON a.answer_ID = c.id
ORDER BY a.question_ID, a.answer_ID
于 2012-09-26T14:29:34.057 に答える
0
select question, answer
from tbl_question q
join question_has_answer qa on qa.question_id = q.id
join tbl_answer a on a.id = qa.answer_id
order by 1,2

ところで、「各回答は1つの質問にのみ属する」ということは関係ありません。テーブル構造により、回答を複数の質問に使用できます。それらがそうではないという事実は、単に現存するデータの問題です。

于 2012-09-26T14:32:35.323 に答える
0

ここに提示された他の答えに基づいて構築します。2つのテーブルは、with(、、)のような1つのテーブルである必要がありquestion_has_answerます。2つのテーブルは必要ありません。質問に回答したかどうかは、すでにわかります。質問の表に回答が表示されていない場合、その質問には回答されません。しかし今のところ、他の回答で指摘されているように、3つのテーブルを使用できます。tbl_answertbl_answersidquestion_idanswer_idquestion_has_answerJOIN

于 2012-09-26T14:37:58.257 に答える
-1
SELECT obj.*,mapping.*,mas.* FROM object_master obj
INNER JOIN mapping_master mapping ON mapping.FMM_Object_ID = obj.FOM_ID
INNER JOIN feedback_master mas ON mapping.FMM_FM_ID = mas.FM_ID
于 2019-03-16T06:52:13.907 に答える