2009-07-01 21 views
1

私はMicrosoft SQLサーバDBを持っています。いくつかのフィールドは、第2のテーブルに基づいて再マップされる必要がある。たとえば:残念ながら、ソースデータをクリーンアップSQL:変換テーブルに基づいてXからYのすべての値を更新します

Table: Data 
User Country 
Alice Australia 
Bob Sydney 
Carol London 
Dave London 


Table: Translations 
From  To 
Sydney Australia 
London United Kingdom 

はオプションではありません、そしてこのインポートは、毎日のように手動でそれは現実的ではありません変更することが起こります。

Translationstableを反復する最も簡単な方法は何ですか?それで、それぞれのペアについては、 "UPDATE Data SET Country = $ TO where Country = $ FROM"という何かが実行されますか?これが理想的なストアドプロシージャで実行できる場合。私はSQLでこれを行ううまく簡単な方法があると感じていますが、それは私のSQLスキルを超えており、私は検索で答えを見つけることができません(おそらくそれは私が知らない本当に些細な名前:-))

答えて

4
Update Data 
Set data.Country = Translations.[To] 
From Data 
     Inner Join Translations 
      On data.Country = Translations.[from] 
+0

+1これは古典的なフォームですマニュアル。あなたは "SET Country = ..."と言うことができ、2番目のデータ(FROM Data AS d ...)のエイリアスであればさらに明確になるかもしれません – dkretz

+0

パーフェクト、そして今私はそれを明白に見ています:-) – DrStalker

2

ライブを試したことはありませんが、これは動作する可能性がありますか?

UPDATEデータD SET国=(= D.Countryから翻訳乃至SELECT)

+0

それは正しいことが、予約語 "へ" だったでしょうか? – chakrit

+0

残念ながら、選択肢があれば一般的な原則では避けるべきサブクエリが追加されます。 – dkretz

+0

コメントは取られましたが、ちょっと、10秒間答えると悪くはありません☺ – Ariel

関連する問題