所以它的短的一端是這是我想要做的,但我不知道正確的語法。當字段「IS NULL」加入另一個字段時 - 訪問2007
表1,表2 名稱,SSN,DOB,列表,日期
我想要做一個LEFT JOIN使用SSN,但是當SSN字段爲空,我希望它加入的DOB場名字匹配的地方。
由於文件是19k條記錄,我不能加入名稱,其中大多數是常用名稱。
所以它的短的一端是這是我想要做的,但我不知道正確的語法。當字段「IS NULL」加入另一個字段時 - 訪問2007
表1,表2 名稱,SSN,DOB,列表,日期
我想要做一個LEFT JOIN使用SSN,但是當SSN字段爲空,我希望它加入的DOB場名字匹配的地方。
由於文件是19k條記錄,我不能加入名稱,其中大多數是常用名稱。
我相信你可以用簡單的LEFT JOIN
和正確的JOIN條件做你想做的事。 Access中的技巧是它不像左連接,括號太少。如有疑問,請添加更多括號。您會對Access中的成功感到驚訝。
SELECT
T1.*,
T2.*
FROM
(Table1 AS T1
LEFT JOIN Table2 AS T2 ON (
(T1.SSN = T2.SSN)
OR (
(T1.SSN IS NULL)
AND (T1.DOB = T2.DOB)
AND (T1.Name = T2.Name)
)
));
如果這不起作用,請讓我知道,我會看看我能做些什麼。
請注意,您可能會也可能不能在GUI查詢編輯器中轉到此設計視圖。
另請注意,由於NULL不等於NULL,所以在OR
約X.SSN IS NOT NULL
之前不需要附加條件。
也許:
SELECT *
FROM Table7
INNER JOIN Table8
ON Table7.SSN = Table8.SSN
WHERE Table8.SSN Is Not Null
UNION
SELECT *
FROM Table7
INNER JOIN Table8
ON Table7.DOB = Table8.DOB
WHERE Table8.SSN Is Null
注意,結果將無法修改。
把它分解成2查詢
/1查詢/ 選擇
LEFT JOIN ... ... WHERE Table2.SSN是NOT NULL
UNION /*第二個查詢*/ SELECT ..... FROM TABLE1 t1, TABLE2 t2 WHERE t2.SSN is NULL
隨着一些調整,我設法讓這個工作。我用了很多括號,但現在我發現我的語法錯了......按照慣例。謝謝您的幫助。 – Oedhel
你介意分享我的查詢是不是正確的,無論是通過編輯帖子或描述它,或通過指向我在網上的另一個地方,我可以看到? – ErikE
說實話,我想要做的比我所問的要複雜得多,這只是基本的語法,我錯了 - 你澄清。 – Oedhel