2017-07-17 4 views
0

Ich habe zwei Tabellen; eine Nachschlagetabelle, die selten aktualisiert wird, und eine Datentabelle, die häufig aktualisiert wird.Aktualisierung Wert auf der Grundlage von zwei anderen Werten mit der Verwendung von Mapping-Tabelle

Lookup-Tabelle sieht so aus, wo die Kombination von Code1 und Code2 für jede Zeile eindeutig ist.

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

Datentabelle sieht so aus;

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

Ich brauche die Datentabelle mit der Klassifizierung entsprechend der einzigartigen Kombination von Code1 und Code2 in der Lookup-Tabelle dynamisch zu aktualisieren.

Was wäre die einfachste/eleganteste Art, dies zu erreichen?

+1

Warum? Verwenden Sie einfach 'JOIN', um die Werte zu erhalten, wenn Sie sie brauchen. –

Antwort

1

Sie können 2 Tabelle aktualisieren wie diese

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

Benötigt, um einen kleinen Mod zu machen, damit dies in t-sql funktioniert; beginnen tran UPDATE table1 SET table2.Classification = table1.Classification FROM table1, table2 WHERE table1.Code2 = table2.Code2 UND table1.Code1 = table2.Code1 tran begehen – cc0

2

Sie müssen einfach nur die zwei Tabellen wie folgt verbinden:

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) 

So Ihr Update wird:

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

Sie können einfach Ansicht mit diesem Code erstellen und erhalten whenver Sie

wollen
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 

Wenn Sie noch aktualisieren müssen, verwenden Sie

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 
Verwandte Themen