从LEFT OUTER JOIN中选择

时间:2014-11-12 14:23:11

标签: sql postgresql

我有一个名为DICT的表,它在表申请人和其他名为DT的表上都有一个外键。

表DT在表申请人中有一个外键。

我想要做的是选择:

  • DICT。*
  • 申请人与DICT有关
  • 与DICT相关的DT和与此DT相关的申请人

我有这个不完整的代码

SELECT DICT.*,DT.*,applicant.*
FROM DICT
LEFT OUTER JOIN DICT.dt = DT.id_DT 
INNER JOIN applicant  ON DICT.applicant =applicant .id_applicant 
WHERE DICT.id_DICT = 5

我必须在DT上使用LEFT OUTER JOIN,因为有些时候DICT没有DT 此代码提供DICT,其相关的申请人记录和DT,但不会向申请人提供与DT相关的信息。

1 个答案:

答案 0 :(得分:0)

如果我正确收集OP,问题是你需要加入applicant两次才能在列表列表中显示两次。一组是加入DT记录的申请人记录,一组是加入DICT记录的申请人记录。

SELECT DICT.*,dict_applicant.*,dt_applicant.*,DT.*
FROM DICT
INNER JOIN applicant AS dict_applicant ON DICT.applicant = dict_applicant.id_applicant 
LEFT OUTER JOIN DT on DICT.dt = DT.id_DT 
INNER JOIN applicant AS dt_applicant on DT.applicant = dt_applicant.id_applicant
WHERE DICT.id_DICT = 5