如何在多个表中使用左连接

时间:2016-08-06 11:08:53

标签: sql oracle

我在下面的查询中需要来自T3 Table的所有记录。 如何使用左连接语句来解决我在oracle中的问题。

 SELECT COUNT(*)

  FROM  R
  LEFT JOIN  RD
    ON (R.ID = RD.RES_INFO_ID)
  LEFT JOIN  RES
    ON (R.SEL_EVL_RES_ID = RES.ID)
  LEFT JOIN  S
    ON (S.ID = R.SEL_EVL_ID)
  LEFT JOIN  D
    ON (RD.DEC_DET_ID = D.ID)
  LEFT JOIN  M
    ON (S.EVL_MAS_ID = M.ID)
  LEFT JOIN  P_RES
    ON (P_RES.PRS_ID = RES.PRS_ID)
  LEFT JOIN  P_MAS 
    ON (P_MAS.PRS_ID = M.PRS_ID)
  LEFT JOIN  P_EVL
    ON (P_EVL.PRS_ID = S.PRS_ID)
  LEFT JOIN  P
    ON (P.EVL_MAS_ID = M.ID)
  LEFT JOIN  DM
    ON (DM.EVL_RES_INF_DET_ID = RD.ID);

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您需要T3中的所有记录,那么它应该是FROM子句中的第一个表。所有连接都应该是LEFT JOIN s。我认为你打算:

SELECT COUNT(*)
FROM T3 R LEFT JOIN
     T1 S
     ON S.ID = R.SELF_EVALUATION_ID LEFT JOIN
     T2 RD
     ON RD.EVL_RESOURCE_INFO_ID = R.ID LEFT JOIN
     T4 RES
     ON R.SELF_EVALUATION_RESOURCE_IDRES.ID LEFT JOIN
     T5 M
     ON S.EVALUATION_MASTER_ID = M.ID LEFT JOIN
     T6 D
     ON RD.DECENCY_DETAIL_ID = D.ID LEFT JOIN
     T7 P
     ON P.EVALUATION_MASTER_ID = M.ID LEFT JOIN
     T8 DM
     ON DM.EVL_RES_INFO_DETAIL_ID = RD.ID;

将来,请遵循一个简单的规则:从不FROM子句中使用逗号。 始终JOIN子句中的连接条件使用显式ON语法。