2012-07-16 13 views
7

更新ステートメント内で3つのテーブルを結合しようとしていますが、これまでに失敗しました。私は、このクエリは2つのテーブルを結合するために作品を知っている:更新ステートメント内で複数のテーブルに結合する

update table 1 
set x = X * Y 
from table 1 as t1 join table 2 as t2 on t1.column1 = t2.column1 

しかし、私の場合、私は3つのテーブルを結合する必要があります。

update table 1 
set x = X * Y 
from table 1 as t1 join table 2 as t2 join table3 as t3 
on t1.column1 = t2.column1 and t2.cloumn2 = t3.column1 

は動作しません。また、次のクエリを試しました:

update table 1 
set x = X * Y 
from table 1, table 2, table 3 
where column1 = column2 and column2= column3 

これを達成する方法を知っている人はいますか?

+1

Yは何台から来るのでしょうか? –

答えて

14

あなたは確かにtable, table, table構文を使用したくありません。 here's why。あなたの中間コードサンプルについては、UPDATEの場合と同じように、結合構文はSELECTとほぼ同じ規則に従います。 JOIN t2 JOIN t3 ON ...は無効ですが、JOIN t2 ON ... JOIN t3 ONが有効です。 yがどこから来るか、完全に修飾するために更新されなければならないのにだからここ

は、私の提案です:

UPDATE t1 
    SET x = x * y -- should either be t2.y or t3.y, not just y 
    FROM dbo.table1 AS t1 
    INNER JOIN table2 AS t2 
    ON t1.column1 = t2.column1 
    INNER JOIN table3 AS t3 
    ON t2.column2 = t3.column1; 
+0

ありがとう、これは私のためにやった。 – Rick

関連する問題