最初のテーブルで IdNumbers (主キー ID ではなく、個人に割り当てられたランダムな ID) が常に正しいとは限らないという情報があります。
したがって、ID と名前の両方で 2 番目のテーブルに参加し、IdNumbers が一致しない場合にのみ名前で結合する場所に移動しようとしています。
大まかに次のような結合ステートメントを使用してクエリに取り組んでいます (SELECT、WHERE、および ORDER BY セクションは除外しています。これらはこの問題に影響を与えていないと考えているためです。ばかばかしいほど複雑なので、混乱を招きます-以下のクエリの部分が私が望むように機能するはずで、問題が明らかに別の場所にある場合は、そのように言ってください。それが私の質問に答えます):
FROM Table1
FULL OUTER JOIN Table2 ON ((Table1.IdNumber = Table2.IdNumber)
OR (Table1.IdNumber != Table2.IdNumber
AND Table1.Lname = Table2.Lname
AND Table1.Fname = Table2.Fname))
ただし、次のように、一致する ID と一致する名前の両方を持つ人々を複数回結合しています。
Fname M Lname Table1.IdNumber Table2.IdNumber2
Matthew - Smith 1 2
Matthew H Smith 2 1
Matthew - Smith 1 1
Matthew H Smith 2 2
ID が一致するため最後の 2 つをプルしていますが、ID が一致せず、名前が一致するため最初の 2 つにも参加していますが、そもそも最初の 2 つに参加しているのはなぜですか? 他の条件は満たしているので参加先を決める際に!=文を無視しているのではないかと思いますが、何とかこの!=文を考慮してほしいです。
前に言ったように、これが機能する場合は、教えてください。私の質問に答えてくれます。
(*編集) 申し訳ありませんが、これらの名前を適切に付ける必要がありました。名前を修正しました。完全な外部結合が必要です。両方のテーブルのすべてが必要であり、正常に機能していますが、提案に感謝します。