假設我有以下表格:
字段_1 | 字段_2 | 字段_3 |
---|---|---|
A | 乙 | D |
A | C | 乙 |
A | C | F |
Z | 乙 | G |
Z | 乙 | H |
Z | C | 我 |
字段_1 | 字段_2 |
---|---|
A | C |
Z | 乙 |
如果我將它們拉入Access 中的「查詢設計」窗口,並將兩個具有通用名稱的欄位連接起來,我可以輕鬆地拉出一個查詢,該查詢顯示「AC」和「ZB」記錄(總共4筆記錄)。
這是我想要完成的任務:假設在第二個表格中的第二筆記錄中,Field_2 為 Null/Blank。我想找到一種方法將此 Null 字段解釋為全部可能的值(考慮其他連接)。現在,如果我刪除該欄位中的值並執行相同的查詢,顯然我只能看到「A」記錄。可以預見的是,將其作為任一方向的外部連接都不會給出我想要的結果。
我想,另一種思考方式是,我希望它更像是具有「與」和「或」邏輯的過濾器。這在 Access 中可能/容易做到嗎?我嘗試使用 Excel 中的高級篩選器來執行此操作會更好嗎?
這個例子顯然被簡化了:在我的行業中,它可能要複雜得多。高級過濾器對於像這樣的小東西來說可以很好地工作,但是我的“不完整數據”表(此處由Table_2 表示)可能有數萬條記錄,而我需要用來擴展它的“完整「資料集是數百筆數千筆記錄(至少如果我要提取一個將所有重要資料以表格格式顯示的查詢)。
如果這裡有人以前遇到過這個問題並且有現成的解決方案,我會很高興。我感謝任何和所有的幫助。
答案1
您需要編輯您的連接,大概是這樣的:
SELECT Table1.*
FROM Table1
INNER JOIN Table2
ON Table2.Field_1 = Table1.Field_1
AND Table2.Field_2 = Table1.Field_2
對於這樣的事情:
SELECT Table1.*
FROM Table1
INNER JOIN Table2
ON Table2.Field_1 = Table1.Field_1
AND IIF(Table2.Field_2 IS NULL,Table1.Field_2,Table2.Field_2) = Table1.Field_2
如果這不完全正確,請原諒我。我認為你不能COALESCE
在 Access 中使用,但我相信應該用它來IIF
代替。不幸的是我已經很多年沒有使用Access了。
無論如何,原則是您需要編輯聯接以表示「如果表 2 中的欄位 2 為空,則使用表 1 中的欄位 2 取代它」。這具有符合 Table1 中每一行的效果。