假设我有下表:
Field_1 | Field_2 | Field_3 |
---|---|---|
A | 乙 | 德 |
A | C | 埃 |
A | C | F |
是 | 乙 | G |
是 | 乙 | H |
是 | C | 我 |
Field_1 | Field_2 |
---|---|
A | C |
是 | 乙 |
如果我将它们拉到 Access 中的查询设计窗口中并将两个具有通用名称的字段连接起来,我可以轻松地拉出一个查询,显示“AC”和“ZB”的记录(总共四条记录)。
我想要实现的是:假设在第二个表中,在第二个记录中,Field_2 为 Null/Blank。我想找到一种方法来将此 Null 字段解释为全部可能的值(考虑到其他连接)。现在,如果我删除该字段中的值并运行相同的查询,我显然只会看到“A”记录。可以预见的是,在任何一个方向上使其成为外连接都不会给我想要的结果。
我想,另一种思考方式是,我希望它更像一个具有“and”和“or”逻辑的过滤器。这在 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。不幸的是,我已经很多年没有使用过 Access 了。
无论如何,原则是您需要编辑连接以表示“如果表 2 中的字段 2 为空,则使用表 1 中的字段 2 代替它”。这具有匹配表 1 中每一行的效果。