MS Access 中的完全外部联接

Ozz*_*zah 11 join ms-access query

我有两个员工名单:

List A:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001237      0001234
0001239      0001237
Run Code Online (Sandbox Code Playgroud)

List B:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001238      0001235
0001239      0001235
Run Code Online (Sandbox Code Playgroud)

我需要以下输出:

StaffID   SupervisorA   SupervisorB
===================================
0001234          NULL          NULL
0001235       0001234       0001234
0001237       0001234          NULL
0001238          NULL       0001235
0001239       0001237       0001235
Run Code Online (Sandbox Code Playgroud)

请注意,列表 A 和列表 B 中的员工 ID 已合并到一个不重复的列表中,并且我已合并了两个列表之间可能不匹配的两个主管详细信息。

查询不必很好。我在每个列表中有大约 8000 条记录,我会很好地运行它。如有必要,我很乐意在之后进行一些小的 Excel 操作。

我想做一个完整的联接,但联接上的 Access 查询设计器属性窗口允许我从表 A 中选择 ALL 并从表 B 中进行匹配、从表 B 中选择 ALL 并从表 A 中进行匹配,或者仅选择在两个 A 中都匹配的那些和 B。

我确信这很简单,但我很少使用 MS Access。

到目前为止,我有两个查询没有给我想要的。我想将它们组合在完整的外部联接中,因为 Access 不会给我一个选项,但不确定如何:

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID;
Run Code Online (Sandbox Code Playgroud)

SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID;
Run Code Online (Sandbox Code Playgroud)

Sim*_*rts 10

我上次使用 Access 是在 2003 年是热门的新事物时,所以这可能并不完全准确到每一个细节。但是,您需要做的是转到查询设计器,将视图更改为“SQL”(即原始文本条目),然后您希望将UNION两个左连接查询放在一起,例如

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID
UNION
SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID
Run Code Online (Sandbox Code Playgroud)