Query
MS Access 中的完全外部聯接
我有兩個員工名單:
List A: StaffID Supervisor ==================== 0001234 NULL 0001235 0001234 0001237 0001234 0001239 0001237
和
List B: StaffID Supervisor ==================== 0001234 NULL 0001235 0001234 0001238 0001235 0001239 0001235
我需要以下輸出:
StaffID SupervisorA SupervisorB =================================== 0001234 NULL NULL 0001235 0001234 0001234 0001237 0001234 NULL 0001238 NULL 0001235 0001239 0001237 0001235
請注意,列表 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;
和
SELECT ListA.*, ListB.* FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID;
我上一次玩 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
SELECT S.StaffId , ListA.Supervisor AS SupervisorA , ListB.Supervisor AS SupervisorB FROM ( SELECT StaffID FROM ListA UNION SELECT StaffID FROM ListB ) AS S LEFT JOIN ListA ON ListA.StaffID = S.StaffID LEFT JOIN ListB ON ListB.StaffID = S.StaffID