SQL连接 - 3个嵌套级别和最深级别不显示数据

时间:2017-12-13 20:06:49

标签: sql left-join

我尝试做嵌套连接。

我测试了它们中的每一个并且它可以工作,但是当我把它们放在一起时它不会显示最深的连接数据。

来自t1(LEFT JOIN BUG ON RELEASES.REL_ID = BUG.BG_TARGET_REL OR RELEASES.REL_ID = BG_DETECTED_IN_REL) AS t1)的那个。

我的SQL来自HP ALM表,其中包含我正在使用的关系表 image

Select
  // REQ
  REQ.RQ_REQ_ID /*Exigence.ID exigence*/,
  REQ.RQ_FATHER_ID /*Exigence.Dossier parent*/,

  // REQ_COVER
  t0.RC_ENTITY_ID /*Couverture de l'exigence.ID entité de couverture*/,
  t0.RC_ITEM_ID /*Couverture de l'exigence.ID unique d'élément de couverture*/,
  t0.RC_REQ_ID /*Couverture de l'exigence.Exigence*/,
  // TEST
  t0.TS_TEST_ID /*Test.ID test*/,

  // REQ_RELEASES
  t2.RQRL_REQ_ID /*Lien des exigences aux mises à jour.ID exigence*/,
  t2.RQRL_ID /*Lien des exigences aux mises à jour.ID*/,
  t2.RQRL_RELEASE_ID /*Lien des exigences aux mises à jour.ID mise à jour*/,
  // RELEASES
  t2.REL_ID /*Mise à jour.ID mise à jour*/,

  // BUG
  t2.BG_BUG_ID

  from REQ

    Left Join
       (SELECT *  FROM REQ_COVER
          LEFT JOIN TEST ON REQ_COVER.RC_ENTITY_ID = TEST.TS_TEST_ID
          ) AS t0 
    ON t0.RC_REQ_ID = REQ.RQ_REQ_ID

Left Join

       (SELECT * FROM REQ_RELEASES
          LEFT JOIN
                    (SELECT * FROM RELEASES
                     LEFT JOIN BUG ON RELEASES.REL_ID = BUG.BG_TARGET_REL OR RELEASES.REL_ID = BG_DETECTED_IN_REL
                     ) AS t1

        ON REQ_RELEASES.RQRL_ID = t1.REL_ID) AS t2


//REQ_RELEASES
  ON REQ.RQ_REQ_ID = t2.RQRL_ID

  WHERE REQ.RQ_FATHER_ID = 21

2 个答案:

答案 0 :(得分:0)

应该

REQ.RQ_REQ_ID = t2.RQRL_ID

ON REQ.RQ_REQ_ID = t2.RQRL_REQ_ID

<强>解释

似乎RQRL_ID是REQ_RELEASES的主键,基于线索#1列的序号位置表明第一列是唯一约束,即主键。线索#2 RQRL_ID听起来与REQ_RELEASE ID类似,因此很难想象它是应该用于加入RQ_REQ_ID的外键。但是,RQRL_REQ_ID听起来像应该用于加入REQ.RQ_REQ_ID的外键。当然,如果你发音REQ喜欢/ rek /。看看统一命名约定可以为新手做什么?

答案 1 :(得分:0)

看起来你有2个问题

第一个:

AS t1 ON REQ_RELEASES.RQRL_ID = t1.REL_ID

应该是

AS t2 on REQ_RELEASES.RQRL_REALEASE_ID = t1.REL_PARENT_ID

第二名:

REQ.RQ_REQ_ID = t2.RQRL_ID

应该是

ON REQ.RQ_REQ_ID = t2.RQRL_REQ_ID