私には2つのスタッフリストがあります。
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が1つの繰り返しのないリストにマージされ、2つのリスト間で一致しない可能性がある2つの監督者の詳細がマージされていることに注意してください。
クエリはニースである必要はありません。各リストに〜8000レコードがあり、それを実行します。その後、必要に応じてExcelのマイナーな操作を行ってよかったです。
完全結合を実行したかったのですが、結合のAccessクエリデザイナのプロパティウィンドウでは、テーブルAからALLとテーブルBからのマッチング、テーブルBからのALLとテーブルAからのマッチング、または両方に一致するもののみを選択できます。およびB.
これは非常に簡単に実行できると確信していますが、MS Accessを使用することはほとんどありません。
これまでに2つのクエリがあり、必要なクエリが得られません。 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」(つまり、未加工のテキストエントリ)に変更してから、2つの左結合クエリを一緒に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
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA LEFT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListB.staffID) Is Null))
UNION
SELECT ListB.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA RIGHT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListA.staffID) Is Null))
UNION
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA INNER JOIN ListB ON ListA.staffID = ListB.staffID
デザイナービューを使用する代わりに、SQLモードでクエリをデザインしてみましたか?
Access 2003/XP/2000/97を使用している場合は、次をご覧ください。 http://www.techonthenet.com/access/queries/view_sql.php
Access 2007/2010を使用している場合は、リボンの左側にある[表示]ボタンの矢印をクリックしてこれを行うことができます。次に、SQLビューをクリックします。
SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID]
UNION
SELECT ListA.*, ListB.*
FROM ListA RIGHT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID];