连接到可能不存在的表

ws51t4hk  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(569)

因此,我将一个表加入到它自己中,以便找到最近添加的某种类型的注解(;notetypesid=20625;)。但是,当没有这种类型的数据时,它会将整个记录的结果从数据集中完全排除,而不是为试图从数据集中提取的字段提供空值;建议记事本;table。

---select ... from ... (including the prop table)

left join PROPOSALNOTEPAD PN_SolicitationStrategy on prop.ID = PN_SolicitationStrategy.ParentId 

   join ( select parentID, max(DateAdded) as MaxDateAdded FROM PROPOSAL_NOTEPAD where NoteTypeID = 20625  group by ParentId) as PN_max_SolicitationStrategy 

  ON PN_SolicitationStrategy.ParentId = PN_max_SolicitationStrategy.ParentId AND PN_SolicitationStrategy.DateAdded = PN_max_SolicitationStrategy.MaxDateAdded

我需要能够测试它是否为空:;从notetypeid=20625;的建议\记事本中选择parentid;。然后根据这个结果进行连接。我该怎么做?如何基于条件加入?

vyswwuz2

vyswwuz21#

使用左外联接:

left join PROPOSALNOTEPAD PN_SolicitationStrategy on prop.ID = PN_SolicitationStrategy.ParentId 

 LEFT OUTER JOIN ( select parentID, max(DateAdded) as MaxDateAdded FROM PROPOSAL_NOTEPAD where NoteTypeID = 20625  group by ParentId) as PN_max_SolicitationStrategy 

  ON PN_SolicitationStrategy.ParentId = PN_max_SolicitationStrategy.ParentId AND PN_SolicitationStrategy.DateAdded = PN_max_SolicitationStrategy.MaxDateAdded

内部连接总是从两个表中带来公共记录。在您的示例中,第1个表和pn\u max\u requisitionstrategy表中没有匹配的记录。所以你没有记录。
使用left outer join将为您带来第一个表中的所有记录和第二个(pn\u max\u requisitionstrategy)表中的匹配记录。
下面是学习联接的简单教程:https://www.w3schools.com/sql/sql_join_left.asp

相关问题