7

update ステートメント内で 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

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

4

1 に答える 1

17

table, table, table構文を使用したくないことは間違いありません。ここに理由があります。中間のコード サンプルに関しては、結合構文は の場合とほぼ同じルールに従いSELECTますUPDATEJOIN 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;
于 2012-07-16T20:15:06.190 に答える