2012-07-16 76 views
7

Tôi đang cố gắng tham gia ba bảng trong một câu lệnh cập nhật, nhưng tôi đã không thành công cho đến nay. Tôi biết câu hỏi này làm việc cho gia nhập hai bảng:Tham gia nhiều bảng trong một câu lệnh cập nhật

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

Tuy nhiên, trong trường hợp của tôi, tôi cần phải tham gia ba bảng vậy:

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 

sẽ không hoạt động. Tôi cũng đã thử truy vấn sau:

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

Có ai biết phương pháp để thực hiện việc này không?

+1

bảng gì Y đến từ đâu? –

Trả lời

14

Bạn chắc chắn không muốn sử dụng cú pháp table, table, table; here's why. Đối với mẫu mã ở giữa của bạn, cú pháp tham gia tuân theo các quy tắc tương tự cho SELECT như đối với UPDATE. JOIN t2 JOIN t3 ON ... không hợp lệ, nhưng JOIN t2 ON ... JOIN t3 ON hợp lệ.

Vì vậy, đây là đề nghị của tôi, mặc dù nó cần được cập nhật để đủ điều kiện đầy đủ nơi y đến từ:

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

Cảm ơn, điều này đã làm cho tôi. – Rick

Các vấn đề liên quan