Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL基于第三方连接2个表_Sql_Join - Fatal编程技术网

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