SQL基于第三方连接2个表
我有三张桌子:SQL基于第三方连接2个表,sql,join,Sql,Join,我有三张桌子: tbl_question (id,question) tbl_answer (id,answer) question_has_answer (id,question_id,answer_id) 它看起来像是多对多的关联,但实际上它只是像一对多的关系一样使用(一个问题有多个答案,但每个答案只属于一个问题)。因此,我需要从第一个和第二个表中获取字段(id除外),如下所示: Question1 answer1 answer2 answer3 Que
tbl_question (id,question)
tbl_answer (id,answer)
question_has_answer (id,question_id,answer_id)
它看起来像是多对多的关联,但实际上它只是像一对多的关系一样使用(一个问题有多个答案,但每个答案只属于一个问题)。因此,我需要从第一个和第二个表中获取字段(id除外),如下所示:
Question1
answer1
answer2
answer3
Question2
answer5
answer4
等等。试试这个
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
顺便说一句,“每个答案只属于一个问题”是无关紧要的;表格结构允许回答多个问题。事实上,它们并非仅仅是现有数据的问题。应该是:
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,我还建议您不要为表中的问题\u has\u答案使用ID
此外:如果一个答案仅与一个问题关联,则不应使用“问题有答案”并修改tbl\U答案以添加问题ID列。以构建此处提供的其他答案。两个表
question\u有答案
和tbl\u答案
应该是一个类似于tbl\u答案
的表(id
,question\u id
,答案
)。不需要两张表,您已经可以判断一个问题是否得到了回答。如果一个问题没有答案出现在表question\u has\u answer
中,则该问题没有答案。但是现在你可以像其他答案所指出的那样加入这三个表。我会编辑它,因为它很混乱(相同的表名和列名)…你使用的是哪种sql?好的,那么发布的查询就可以了。
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
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