こんにちは、誰かがこのクエリで私を助けることができるかどうか疑問に思います. 2 つの列を持つデータ セットがあります。列 A/列 B; これを Table UpdateData と呼びましょう。
これらのコードのマッピング テーブルであるスタンディング データを含む 2 つの Access テーブルもあります。1 つの表は更新前のコード (oldCodes) で、もう 1 つの表はシステム更新後のコード (NewCode) です。私のデータセットでは、列 A には更新前のコードがあり、列 B には更新後のコードがあります。私のアイデアは、これら 2 つの Access テーブルの新しいコードと古いコードを、次のように SQL Server (2005) の 1 つのテーブルに結合することでした。
Oldcode display
===== =======
RTYX45 No
GHYUN6 No
BYUER5 Yes
Newcode display
===== =======
VUJNG6 Yes
LERWS8 No
XCRYU7 Yes
code display
===== =======
RTYX45 No
GHYUN6 No
BYUER5 Yes
VUJNG6 Yes
LERWS8 No
XCRYU7 Yes
これはデータの例にすぎず、表示されているよりもはるかに多くの行があることに注意してください。
したがって、updateData と Combined コードを結合する場合、1 つのフィールド (表示) が列 A/B のいずれかからの一致を表示できるように設定するにはどうすればよいですか (またはしない)。1 つの列のみに結合した場合、combinedCodes テーブルから updateData テーブルへの左結合を持つ列 A を言うと、combinedCodes 表示フィールドに正しいデータが表示され、一致しなかったフィールドには null が表示されます。
しかし、次に、CombinedCodes から UpdateData テーブルへの左結合を使用して列 B から別の結合を導入すると、combinedCodes の表示で、null の前に古いコードが表示されましたが、新しいコードが使用される前に古いコードも表示されました。実際に起こっていることと少し混乱していたので、これは100%正しくないかもしれませんが、各クエリ結果を個々の結合と比較すると、列Aと列Bへの結合によるクエリ結果は異なりましたが、追加時のデータ数は同じでした個別のクエリから個別のカウントを増やします。
select c.Fields
--,f.Display
,pt.Display
from UpdateData c
INNER JOIN PRE_CODES pt
ON c.columnA = pt.code -- only for pre-codes
--INNER JOIN POST_CODES f
--ON c.columnB = f.code
コメントアウトされた結合とフィールドは郵便番号用で、もう 1 つは事前コード用です。郵便番号の null を表示するために左外部結合を含めてから、2 番目の結合と f.display とフィールドの左結合を導入すると、それぞれを個別に実行して結合した場合と同じ結果が表示されません。
この種の結合は、結合に関する私の理解を超えています。ここで何をすべきか正確にはわかりません。これで私を助けてくれる人に
ありがとう
アンドリュー