在阅读了许多其他人已经离开加入问题和缺失行之后,我仍然没有得出结论为什么我的行没有出现。
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_NO
和F_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
谢谢!
答案 0 :(得分:0)
我用来处理这个问题的方法是使用子查询来处理所有不需要匹配两个表之间的列值的连接条件。
我不太多使用MS Access,但是必须处理我的连接上的括号,这个涉及连接条件的问题非常令人沮丧。