2011-08-09 5 views
0

私は、ツールとIOPointという2つのテーブルが、どちらもGUとしてPKとして使用されているとします。ツールには、IOPointテーブルへのGUID FK列の列があります。SelectステートメントからFK Guidを更新する

プログラムのIOPointを変更すると、値を更新するのではなく、IOPointのエントリのリストからFKを更新します(IOPointテーブルは変更されません)。

したがって、2つの一意の列に基づいてIOPointからSELECTを実行し、THAT行のGUIDをツールテーブルのFK列に更新する必要があります。

VAR myGUID = SELECT IOP.ID 
    FROM IOPoint IOP 
    WHERE IOP.A = @A AND [email protected] 

UPDATE Tool T 
    SET T.IOPoint_1 = myGuid 
    WHERE [email protected] 

私はこのクエリにより、プログラムで使用IOPointsの多数のDB更新あたり約30回をしなければならないので、私はうまくいけば、パフォーマンスの問題が発生しないこと、それを行うための最も効率的な方法を見つける必要があります。

何か助けていただければ幸いです。みんな、ありがとう!

+0

これを明確にするために更新します。混乱させて申し訳ありません。 2つのカラムだけが必要です。挿入を言ってはいけませんが、代わりにToolテーブルのFKカラムを更新してください。 – ImGreg

答えて

2

私はSELECTとUPDATEを以下の1つのSQL文で実行できると思います。

テーブルがdboスキーマであると仮定すると、クエリはキー列IDを使用してテーブルdbo.Toolとdbo.IOPointを結合し、列AとBで行をフィルタリングします。次に、テーブルIOPointからID値を更新しますテーブルツールのIOPoint_1列

私はそれがあなたが探しているものであることを望みます。

UPDATE  T 
SET   T.IOPoint_1 = IOP.ID 
FROM  dbo.Tool T 
INNER JOIN dbo.IOPoint IOP 
ON   IOP.ID  = T.ID 
WHERE  IOP.A  = @A 
AND   IOP.B  = @B 
+0

それは素晴らしい仕事をした。ありがとう! – ImGreg

関連する問題