2013-03-07 69 views
-2

我有參與此查詢我需要創建三個表,我不完全知道如何以更新辦公室加入這兩個(地址 & address_key)表表。UPDATE涉及三個表

我有一個辦公室表,地址表和address_key表。 辦公室表具有地址數據(街道,城市,州,郵編)和辦公室ID#。

地址表具有地址數據和地址Id#。

address_key表中有address_id和office_id的。我需要更新表辦公室表中的現有行,地址數據來自地址錶鏈接它們與address_key表中的密鑰。

我將如何去更新辦公室表地址數據字段?

+3

這看起來像家庭作業。在這個網站上真正預計到,在提供任何幫助之前,對於作業問題OP(原始海報,您)展示了努力。 – 2013-03-07 17:37:02

回答

1

你可以通過address_key表的每一行循環,更新與使用您所循環的每一行中的ADDRESS_ID地址信息office_id辦公室備案。我認爲,如果你使用的是Oracle(問題被標記爲Oracle11g中)這樣的事情應該工作:

FOR id_row in (SELECT * FROM address_key) 
LOOP 
    UPDATE office SET (street, city, state, zip) = 
     (SELECT street, city, state, zip FROM address WHERE address_id = id_row.address_id); 
    WHERE office_id = id_row.office_id 
END LOOP 

我希望幫助!

+0

非常感謝。謝謝!! – user761758 2013-03-07 18:11:44

0
update o set 
    street = a.street 
    , city = a.city 
    , state = a.state 
    , zip = a.zip 
from Office o 
join Address_Key k 
    on k.officeid = o.officeID 
join Address a 
    on a.addressID = k.addressid 
0

您可以根據您的連接運行UPDATE。

UPDATE office 
SET office.street = address.street , 
office.city = address.city , 
office.state = address. , 
office.zip = address.zip 
FROM office 
INNER JOIN address_key ON office.office_id = address_key.office_id 
INNER JOIN address ON address_key.address_id = address.address_id