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

Left Join not returning results when a joni condition fails

在阅读了很多关于许多其他人离开连接问题和丢失行的信息后,我仍然没有得出结论,为什么我的行没有出现。

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'

'555' 只是我输入的值,试图找到丢失的行(我知道哪一行没有出现,但我不明白为什么)。我删除了所有其他 where 子句,但它仍然没有出现。

我正在尝试获取有问题的 UNIT_NO 以及 F_CARD.CARD_NOF_CARD.END_DT(如果适用)。 F_CARD table 包含两个在 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

谢谢!

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

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