2012-07-16 10 views
7

Próbuję dołączyć trzy tabele w ramach oświadczenia aktualizacji, ale jak dotąd nie udało się. Wiem, że ta kwerenda działa do łączenia dwóch tabel:Łączenie wielu tabel w oświadczeniu aktualizacji

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

Jednak w moim przypadku, trzeba dołączyć trzy tabele sposób:

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 

nie zadziała. Próbowałem również następujące zapytanie:

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

Czy ktoś wie metody do osiągnięcia tego?

+1

Co tabela ma Y pochodzi? –

Odpowiedz

14

Zdecydowanie nie chcesz używać składni table, table, table; here's why. Jeśli chodzi o przykład kodu środkowego, składnia łączy się z grubsza tymi samymi regułami dla SELECT, tak jak w przypadku UPDATE. JOIN t2 JOIN t3 ON ... jest nieprawidłowe, ale JOIN t2 ON ... JOIN t3 ON jest prawidłowe.

Więc tutaj jest moja propozycja, choć powinna być aktualizowana w pełni zakwalifikować gdzie y pochodzi z:

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

Dzięki, to mi się udało. – Rick