少し背景:
このプロジェクトでは、異なるアプリケーションから取得した2つのテーブルを組み合わせようとしています。
アプリケーションの1つは、1つのテーブルに正常に結合したいくつかのテーブルを提供します。
DB_Total
他のアプリケーションは、タグ名だけを持つ単一のテーブルを提供します。このテーブルは次のように呼ばれます。
TagNames_EA
ここで、「TagNames_EA」テーブルの「Name」列を「DB_Total」テーブルに追加して、「Name」フィールドの値を比較できるようにします。
これまでのところ、一致しない名前を比較して除外するための次のコードがあります。
SELECT
d.Address,
d.Type,
d.Name,
IIf(t.Name Is Null, False, True) AS match_found
FROM
DB_Total AS d
LEFT JOIN TagNames_EA AS t
ON d.Name = t.Name;
これはうまく機能しますが、DB_TotalテーブルのTagNames_EAテーブルの「Name」値も確認したいと思います。
既存のテーブルに列を追加することは可能です。
ALTER TABLE DB_Total
ADD Names_EA
しかし、私がこれを試してみると:
ALTER TABLE DB_Total
ADD Names FROM TagNames_EA AS Names_EA
それは動作しません
これを行う簡単な方法はありますか?
編集:私は自分の状況を説明する方法を単純化しようとしました。
Edit2:例
「DB_Total」テーブルには、名前のリストがあります。これは、「EA_Names」テーブルの名前とまったく同じである必要があります。
DB_Total:
Name
S1\SVS_AK\ENA[3]
S1\SVS_AK\ENA[4]
S1\SVS_AK\ENA[5]
S1\SVS_AK\ENA[6]
S1\SVS_AK\ENA[7]
S1\SVS_AK\ENA[8]
ただし、間違えることがあるので、一致しない名前がないか確認したいと思います。このような:
TagNames_EA
Name
S1\SVS_AK\ENA[3]
S1\SVS_AK\ENA[4]
S1\SVS_AK\ENA[5]
S1\SVS_AK\EMA[6] <--- This is a Mistake and will come up as a mismatch
S1\SVS_AK\ENA[7]
S1\SVS_AK\ENA[8]
現在、私が使用しているコードは、DB_Totalテーブルに新しい列を追加します。値は「-1」(一致する場合)または値「0」(一致しない名前の場合)です。
これは次のようになります:
DB_Total:
Name match_found
S1\SVS_AK\ENA[3] -1
S1\SVS_AK\ENA[4] -1
S1\SVS_AK\ENA[5] -1
S1\SVS_AK\ENA[6] 0
S1\SVS_AK\ENA[7] -1
S1\SVS_AK\ENA[8] -1
私が達成したいのは、以下を含むテーブルです。
DB_Total:
Name Names_EA match_found
S1\SVS_AK\ENA[3] S1\SVS_AK\ENA[3] -1
S1\SVS_AK\ENA[4] S1\SVS_AK\ENA[4] -1
S1\SVS_AK\ENA[5] S1\SVS_AK\ENA[5] -1
S1\SVS_AK\ENA[6] S1\SVS_AK\EMA[6] 0
S1\SVS_AK\ENA[7] S1\SVS_AK\ENA[7] -1
S1\SVS_AK\ENA[8] S1\SVS_AK\ENA[8] -1
Joeからのコメントの後、同じテーブルのEA_Tableの名前の値も確認したい場合、これが正しい方法であるかどうか疑問に思い始めています。