2017-07-17 14 views
0

2つのテーブルがあります。ほとんど更新されない1つのルックアップテーブル、および頻繁に更新される1つのデータテーブル。マッピングテーブルを使用した2つの他の値に基づく値の更新

ルックアップテーブルは、Code1とCode2の組み合わせが各行で一意です。

Code1 | Code2 | Classification 
------------------------------ 
AB | CD | Class1 
XX | YY | Class2 

データテーブルは次のようになります。

SomeData | Code1 | Code2 | Classification 
------------------------------ 
foo  |AB  | CD | 
bar  |XX  | YY | 

私は動的にルックアップテーブルのCODE1とCODE2のユニークな組み合わせに対応した分類でデータテーブルを更新する必要があります。

これを達成する最も単純で最もエレガントな方法は何ですか?

+1

のように2テーブルを更新することができますか?必要なときに値を取得するために 'JOIN'を使用してください。 –

答えて

1

あなたはなぜこの

UPDATE table1, table2 
SET table2.Classification = table1.Classification 
WHERE table1.Code2 = table2.Code2 AND table1.Code1 = table2.Code1; 
+1

t-sqlでこの作業を行うには少しモデリングする必要があります。 開始TRAN のUPDATE TABLE1 SET table2.Classification = table1.Classification table1のFROM、table2の WHERE table1.Code2 = table2.Code2 AND table1.Code1 = table2.Code1 TRANをコミット – cc0

2

あなたは、単にこのように2つのテーブルを結合する必要があります。

Select b.SomeData, b.Code1, b.Code2, a.Classification 
FROM 
Lookup_table a 
left join 
Data_table b 
on (a.Code1 = b.Code1 and a.Code2 = b.Code2) 

は、だからあなたのアップデートは、次のようになります。あなたはこのコードでビューを作成し、必要whenver得ることができます

Update b 
Set b.Classification = a.Classification 
FROM 
Data_table b 
Right join 
Lookup_table a 
on (a.Code1 = b.Code1 and a.Code2 = b.Code2) 
2

select t2.somedata,t1.Code1,t1.Code2,t1.Classification from lookup_table as t1 
left join data_table as t2 on t1.code1=t2.code1 and t1.code2=t2.code2 

更新する必要がある場合は、こちらを使用してください。

update t2 
set 
t2.Classification=t2.Classification 
from lookup_table as t1 
inner join data_table as t2 on t1.code1=t2.code1 and t1.code2=t2.code2 
関連する問題