この状況でスクリプトを修正するのに苦労しており、誰かが助けてくれるかどうか疑問に思っています:
という同じ列を共有する テーブルaddress
とテーブルがあります。したがって、両方のテーブルで同じエンティティを参照します。住所と電話番号の情報は、以前は 1 つのテーブル (テーブル) に格納されていましたが、Oracle 11g に移行したため、テーブルとテーブルに分割されました。phone
id_number
id_number = 2
address
address
phone
と呼ばれる 3 番目のテーブルがありますboth_ids
。このテーブルには、列を格納する列とその他の IDid_number
に加えて、列もあります。other_ids
SSN
address
テーブルが複数のテーブルに分割される前は、次のphone
スクリプトがありました: (Sybase で記述)
INSERT INTO sometable_3 (
SELECT a.id_number, a.other_id,
NVL(a1.addr_type_code,0) home_addr_type_code,
NVL(a1.addr_status_code,0) home_addr_status_code,
NVL(a1.addr_pref_ind,0) home_addr_pref_ind,
NVL(a1.street1,0) home_street1,
NVL(a1.street2,0) home_street2,
NVL(a1.street3,0) home_street3,
NVL(a1.city,0) home_city,
NVL(a1.state_code,0) home_state_code,
NVL(a1.zipcode,0) home_zipcode,
NVL(a1.zip_suffix,0) home_zip_suffix,
NVL(a1.telephone_status_code,0) home_phone_status,
NVL(a1.area_code,0) home_area_code,
NVL(a1.telephone_number,0) home_phone_number,
NVL(a1.extension,0) home_phone_extension,
NVL(a1.date_modified,'') home_date_modified
FROM both_ids a, address a1
WHERE a.id_number = a1.id_number(+)
AND a1.addr_type_code = 'H');
Oracle 11g に移行したため、住所と電話番号の情報が分割されました。
上記のスクリプトを変更して、Oracle 11g で同じ結果を生成するにはどうすればよいですか?
最初に address テーブルと phone テーブルの間で INNER JOIN を実行し、次に both_ids に対して LEFT OUTER JOIN を実行する必要がありますか?
私は次のことを試しましたが、うまくいきませんでした:
Insert Into..
select ...
FROM a1. address
INNER JOIN t.Phone ON a1.id_number = t.id_number
LEFT OUTER JOIN both_ids a ON a.id_number = a1.id_number
WHERE a1.adrr_type_code = 'H'