2012-02-27 4 views
0

ここに私の状況は、私はStatusesstatusID, statusName)という22のステータスを持つテーブルがあり、statusIDの列を持つ他のテーブルがあります。列全体を更新する方法は?

これで、お客様はStatusesテーブル内の22のステータスをすべて13のステータスに統合したいと考えていました。そして、正確に言えば、他のすべてのテーブルのすべてstatusIDを更新する必要があります。

誰でもお手伝いできますか?

+0

あなたはカスケード更新を行うために探していますか? – Taryn

+0

あなたはどのRDBMSを使用していますか? – Lamak

+0

sql server 2008.私はこのためのスクリプトを書くと思いますか? – GLP

答えて

5

これは一時的なもののように聞こえるので、最も簡単な方法は地図をハードコードすることです。

UPDATE 
    TABLE 
SET StatusID = CASE WHEN StatusID = 1 THEN 5 
        WHEN StatusID = 2 THEN 5 
        WHEN StatusID = 3 THEN 1 
        WHEN StatusID = 4 THEN 5 
        WHEN StatusID = 5 THEN 2 
        ...17 more times 
       END 

またはすでにマッピングテーブルを持っている場合

UPDATE 
    TABLE 
SET StatusID = map.NewStatusID 
FROM 
     TABLE as T 
     INNER JOIN Map 
     ON t.StatusID = map.OldStatusID 
+0

ありがとうございます。 statusIdにselectクエリを使用することは可能ですか?私はマッピングテーブルStatusesMapping(OldStatusID、NewStatusID)を持っています。 – GLP

+1

確かに私の例を更新して、マッピングテーブルを追加しました –

+0

ありがとうございました。それはまさに私が欲しいものです。後でテーブルを変更したい場合は、スクリプトではなくマッピングテーブルを変更するだけで済みます。 – GLP

関連する問題