当joni条件失败时,Left Join不返回结果

时间:2015-06-26 15:33:02

标签: sql ms-access null left-join

在阅读了许多其他人已经离开加入问题和缺失行之后,我仍然没有得出结论为什么我的行没有出现。

SELECT UNIT_MAIN.UNIT_NO
    ,F_CARD.CARD_NO
    ,F_CARD.END_DT
FROM UNIT_MAIN
LEFT JOIN F_CARD
        ON UNIT_MAIN.UNIT_ID = F_CARD.ASSIGNED_ID 
           AND ((F_CARD.CARD_NO)<>'9' & [unit_no]) 
           AND (F_CARD.CARD_NO)<> Replace(LTrim(Replace([unit_no],'0',' ')),' ','0') 
           AND ((F_CARD.END_DT) Is Null))
WHERE UNIT_MAIN.UNIT_NO = '555'

&#39; 555&#39;只是我输入的值以尝试找到丢失的行(我知道哪一行不会出现,我无法弄清楚原因)。我把所有其他条款都删除了,但它仍然没有出现。

我正在尝试获取有问题的UNIT_NO以及F_CARD.CARD_NOF_CARD.END_DT(如果适用)。 F_CARD表包含两个与UNIT_ID匹配的条目,但两者在F_CARD.END_DT中都没有空值,因此连接条件失败。

这是否意味着UNIT_NO仍然应该显示为左连接的左侧结果?

我想要的结果如下:

555 | null | null 

但它并没有显示出来。如果我从联接中删除F_CARD.END_DT IS NULL条件,那么我得到

555 | 123 | Jan 2015
555 | 234 | Feb 2015

谢谢!

1 个答案:

答案 0 :(得分:0)

我用来处理这个问题的方法是使用子查询来处理所有不需要匹配两个表之间的列值的连接条件。

我不太多使用MS Access,但是必须处理我的连接上的括号,这个涉及连接条件的问题非常令人沮丧。