2011-07-08 43 views
0

我有以下3個表:更新表:請幫助

storage (
id, 
client, 
cost, -- which have no values 
col_1, -- which have no values 
col_2, -- which have no values 
col_3, -- which have no values 
and other columns 
) 

output(
id, 
client, 
col_1, 
col_2, 
col_3 
) 

ad(
id, 
client, 
cost, 
and other colums 
) 

存儲表有170行,輸出有50個和廣告表有1000行。

我需要的是更新storage.cost 與ad.cost,更新storage.col_1,storage.col_2,storage.col_3值與output.col_1,output.col_2值, output.col_3基於加入3個表中的客戶列。

如果更新查詢不可能,那麼我需要在3個表中的客戶端列上連接選擇基於 的查詢,以便我可以插入到另一個表中並使用該表而不是存儲。 我需要存儲,col_1,col_2,col_3所有colums從輸出和廣告表和170行的成本,以便更新查詢不是 要求,我可以使用這170行作爲存儲表。

請幫忙。

回答

1

在我看來,數據庫模型設計是錯誤的。

你爲什麼不創建一個基於其他表的視圖v_storage

CREATE VIEW v_storage AS 
    SELECT o.client, a.cost, o.col_1, o.col_2, o.col_3, s.other_columns 
    FROM output AS o 
    JOIN ad AS a ON a.client = o.client 
    JOIN storage AS s ON s.client = o.client 

而且從存儲表刪除重複costcol_N列。

編輯:

但是,如果你還需要問的問題的答案,你可以在你UPDATE語句中指定多個表,並使用表選擇在其中:

UPDATE storage, output, ad 
    SET storage.cost = ad.cost, storage.col_1 = output.col_1, ... 
WHERE output.client = storage.client 
AND ad.client = storage.client