-2

作成する必要のあるこのクエリに3つのテーブルが含まれていますが、オフィステーブルを更新するためにこれら2つの( addressaddress_key )テーブルを結合する方法が正確にはわかりません。

オフィステーブル、アドレステーブルaddress_keyテーブルがあります。オフィステーブルには、住所データ(street、city、state、zip)とオフィスID番号があります。

アドレステーブルには、アドレスデータとアドレスID#があります。

address_keyテーブルにはaddress_idとoffice_idがあります。officeテーブルの既存の行をaddress_keyテーブルのキーとリンクしているaddressテーブルのアドレスデータで更新する必要があります。

オフィステーブルのアドレスデータフィールドを更新するにはどうすればよいですか?

4

3 に答える 3

1

address_keyテーブルをループし、各行について、ループしている各行のaddress_idを使用して、office_idでoffice_idを使用してofficeレコードを更新します。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

お役に立てば幸いです。

于 2013-03-07T17:52:09.143 に答える
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
于 2013-03-07T17:38:13.287 に答える
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
于 2013-03-07T17:38:27.667 に答える