首页 > 解决方案 > 如何修复此查询以返回来自原始连接的所有行以及使用另一个属性中的 id 的所有行

问题描述

我正在编写一个查询以返回测试用例涵盖的所有要求。

由于需求的链接方式,需求表还包括对父需求的引用。

我的问题是我不确定如何加入我的表以返回测试用例直接涵盖的所有需求,以及它们的所有父需求。

我试图在父属性上设置一个自连接到需求 id 属性,但由于某种原因我无法让它工作,并且它返回一个错误(“RQ1”。“REQ_FATHER_ID”:无效标识符)当我尝试引用表的父 ID 时。

这是我到目前为止所做的工作,这将返回测试直接涵盖的所有要求:

SELECT
      R.RQ_USER_34
      /* Requirement ID */, 
      T.TS_NAME
      /* Test Name */,
      T.TS_TEST_ID
      /* Test ID */,
      TC.TC_STATUS
      /* Test Result */,
      TC.TC_TESTCYCL_ID
      /* Test Cycle ID */
    FROM
      TEST  T
      LEFT JOIN TESTCYCL TC ON T.TS_TEST_ID = TC.TC_TESTCYCL_ID
      LEFT JOIN REQ_COVER RC ON T.TS_TEST_ID = RC.RC_ENTITY_ID
      LEFT JOIN REQ R ON R.RQ_REQ_ID = RC.RC_REQ_ID
    ORDER BY
      T.TS_TEST_ID
      ASC

这是我尝试从引用上述查询的父 ID 的需求表中添加行的自联接,但它不起作用(请注意,RQ_FATHER_ID = -1 表示需求没有父级):

SELECT
      R1.RQ_USER_34 AS ChildReq,
      R2.RQ_USER_34 AS ParentReq,
      T.TS_NAME,
      T.TS_TEST_ID,
      TC.TC_STATUS,
      TC.TC_TESTCYCL_ID
    FROM
      TEST T
      LEFT JOIN TESTCYCL TC ON T.TS_TEST_ID = TC.TC_TESTCYCL_ID
      LEFT JOIN REQ_COVER RC ON T.TS_TEST_ID = RC.RC_ENTITY_ID
      LEFT JOIN REQ R1 ON R1.RQ_REQ_ID = RC.RC_REQ_ID
      LEFT JOIN REQ R2 ON R2.RQ_REQ_ID = R1.RQ_FATHER_ID
     WHERE
      R1.RQ_REQ_FATHER <> -1
    ORDER BY
      T.TS_TEST_ID
      ASC

标签: sqldatabaseself-join

解决方案


推荐阅读