0

我有 3 张桌子:

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

看起来像多对多关联,但实际上它只是像一对多那样使用(一个问题有多个答案,但每个答案只属于一个问题)。所以我需要从第一个和第二个表中获取字段(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

如果您不打算使用该 ID,我还建议不要对 table question_has_answer 使用 ID。

更进一步:如果 1 个答案仅与 1 个问题相关联,则不应使用 question_has_answer 并修改 tbl_answer 以添加 questionID 列。

于 2012-09-26T14:33:05.343 回答
0

以此处提供的其他答案为基础。这两个表应该是一个表,例如question_has_answerwith ( , , )。不需要两张表,您已经可以判断一个问题是否得到回答。如果一个问题在表格中没有给出答案,那么它就不会被回答。但是现在您可以使用其他答案指出的三个表格。tbl_answertbl_answersidquestion_idanswer_idquestion_has_answerJOIN

于 2012-09-26T14:37:58.257 回答
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

顺便说一句,“每个答案只属于一个问题”是无关紧要的;表格结构允许将答案用于多个问题。他们不是的事实仅仅是现存数据的问题。

于 2012-09-26T14:32:35.323 回答
-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 回答