我有3张桌子:
tbl_question (id,question)
tbl_answer (id,answer)
question_has_answer (id,question_id,answer_id)
它看起来像多对多关联,但实际上它只用于1对多(一个问题有多个答案,但每个答案只属于问题)。所以我需要从第一个和第二个表中获取字段(除了id),如下所示:
Question1
answer1
answer2
answer3
Question2
answer5
answer4
等等。
答案 0 :(得分: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,我还建议不要使用表question_has_answer的ID。
还有更多:如果1个答案仅与1个问题相关联,则不应使用question_has_answer并修改tbl_answer以添加questionID列。
答案 1 :(得分: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
答案 2 :(得分: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
顺便说一下,“每个答案只属于一个问题”是无关紧要的;表结构允许将答案用于多个问题。事实上它们不仅仅是现存数据的问题。
答案 3 :(得分:0)
以此处提供的其他答案为基础。两个表question_has_answer
和tbl_answer
应该是一个表格tbl_answers
,其中包含id
,question_id
,answer_id
)。不需要两个表,您已经可以判断问题是否得到了回答。如果问题没有在表question_has_answer
中提供答案,则无法回答。但是现在你可以JOIN
其他答案所指出的三个表格。
答案 4 :(得分:-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