sql db2与1个具有某些空值的表联接

时间:2018-06-20 12:26:41

标签: sql db2

我有2个表:arao

所有项目(文章编号)都存在于ar中,但有些不存在于ao中,或者不存在值为aotlkd="F"

我尝试过:

select ao.aoarom, ar.ararnr , ar.ararir, ar.ararkc 
from ao 
  join ar on ao.aoarnr=ar.ararnr 
WHERE ar.ARARNR = '"+ articlenumber+"' 
 and ao.aotlkd='F'

还尝试了左右连接和外部连接,这没有什么区别。

我希望在aoarom不存在或ao不为aotlkd的情况下为"F"返回null,并为ararnr, ararir, ararkc返回值在这种情况下

现在,当ao不存在或aotlkd不是"F"时,它不返回任何内容

2 个答案:

答案 0 :(得分:1)

select ao.aoarom, ar.ararnr , ar.ararir, ar.ararkc 
from ar left join (SELECT * FROM ao WHERE ao.aotlkd='F') as ao on ao.aoarnr=ar.ararnr 
WHERE ar.ARARNR = '"+ articlenumber+"' 

是我对您的规格的评价。但是,该规范(“我希望它在ao不存在或aotlkd不为“ F”时为aoarom返回null,并且在这种情况下还为ararnr,arararir,ararkc返回值”)确实太不精确了,确定您想要/需要/期望的东西到底是什么。

答案 1 :(得分:0)

您尝试过

select aoarom, ararnr , ararir, ararkc 
from ao 
LEFT join
     ar 
on   ao.aoarnr = ar.ararnr 
and  ARARNR    = '"+ articlenumber+"' 
and  aotlkd    = 'F'

顺便说一句,它可以帮助我们了解您是否在表名的ARARNRaotlkd前面加上前缀,以便我们知道这些列在哪个表中。