2

この状況でスクリプトを修正するのに苦労しており、誰かが助けてくれるかどうか疑問に思っています:

という同じ列を共有する テーブルaddressとテーブルがあります。したがって、両方のテーブルで同じエンティティを参照します。住所と電話番号の情報は、以前は 1 つのテーブル (テーブル) に格納されていましたが、Oracle 11g に移行したため、テーブルとテーブルに分割されました。phoneid_numberid_number = 2addressaddressphone

と呼ばれる 3 番目のテーブルがありますboth_ids。このテーブルには、列を格納する列とその他の IDid_numberに加えて、列もあります。other_idsSSN

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'
4

1 に答える 1

1

クエリに構文エラーがあります。以下のコメントに、クエリは次のように書かれています。

 ..
 FROM address a1 JOIN telephone t ON a1.id_number = t.id_number
 AND RIGHT OUTER JOIN tt_gl_both_ids a ON a.id_number = a1.id_number
 WHERE
 ..

捨てれANDばうまくいくでしょう。また、右外側の結合を左外側の結合に置き換えます。これは、これを達成しようとしているためです(これも、あなたが書いたコメントに基づいています)。

于 2012-09-06T15:48:26.807 に答える