2013-03-07 115 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