Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 使用联接将两个不同表的两列相乘时复制行_Sql_Sql Server_Join - Fatal编程技术网

Sql 使用联接将两个不同表的两列相乘时复制行

Sql 使用联接将两个不同表的两列相乘时复制行,sql,sql-server,join,Sql,Sql Server,Join,我有以下几张表 问题(分段)(主控) 问题(设置)(详情) 当我连接这两个表时,我得到了重复的行。。 请查看fiddle,我在那里发布了这两个模式及其数据 这是我预期的行动 您需要获得每个部分的问号。此外,您应该使用分支id、测试id、主题代码id以及段id加入 使用JOIN然后获取不同的值 SELECT DISTINCT qsm.segment_id, segment_name, segment_description , must_attend_question AS tot_atte

我有以下几张表

  • 问题(分段)(主控)
  • 问题(设置)(详情)
  • 当我连接这两个表时,我得到了重复的行。。 请查看fiddle,我在那里发布了这两个模式及其数据

    这是我预期的行动


    您需要获得每个部分的问号。此外,您应该使用分支id、测试id、主题代码id以及段id加入

    使用JOIN然后获取不同的值

    SELECT DISTINCT qsm.segment_id, segment_name, segment_description
      , must_attend_question AS tot_attented_question, total_question AS tot_questions
      , (qsd.question_marks * must_attend_question) AS tot_marks
      , '' AS marks_obtain
    FROM dbo.Question_Segment_Master AS qsm
    INNER JOIN dbo.Question_Set_Details AS qsd
    ON (qsd.branch_id = qsm.branch_id AND qsd.test_id = qsm.test_id
    AND qsd.segment_id = qsm.segment_id AND qsd.subject_code_id = qsm.subject_code_id)
    WHERE qsm.subject_code_id = 1 and qsm.test_id = 1 and qsm.branch_id = 15;
    

    您的join子句中缺少段id

    SELECT DISTINCT
            qsm.segment_id,
            qsm.segment_name,
            qsm.segment_description,
            qsm.must_attend_question tot_attented_question,
            qsm.total_question tot_questions,
            (qsd.question_marks * must_attend_question) tot_marks,
            '' AS marks_obtain
    FROM dbo.question_segment_master qsm 
    INNER JOIN dbo.question_set_details qsd on
                                            qsd.test_id = qsm.test_id
                                            and qsd.segment_id = qsm.segment_id
    WHERE qsm.test_id=1
          AND qsm.branch_id = 15 
          AND qsm.subject_code_id =1 AND qsd.question_set_id = 1
    

    SqLFIDLE是很好的,但是添加表数据、预期结果和查询也在这里。我已经发布了Sigrle小提琴没有显示重复行,请解释你认为“复制”我加入2个表,在WHERE子句中我已经提到了条件,我还是得到了重复段ID(s)。需要区分的地方..可能您忘记在连接中使用段id了?请在这里粘贴预期结果表。