- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルのマッチングについて)
テーブルのマッチングについて
このQ&Aのポイント
- テーブルのマッチングについてORACLE10gを使用しています。AとB同じレイアウト(キーも同じ)のテーブルを比較し、AテーブルのみにあるものをCテーブルに追加し、BテーブルのみにあるものもCテーブルに追加する方法を教えてください。
- ORACLE10gを使用して、同じレイアウト(キーも同じ)のAテーブルとBテーブルを比較し、AテーブルのみにあるものとBテーブルのみにあるもの、そしてAとB両方にあるものをCテーブルに追加したいです。さらに、Cテーブルに項目を追加して各パターンに対応する値をセットします。
- ORACLE10gでのテーブルのマッチング方法について教えてください。AとBテーブルは同じレイアウト(キーも同じ)で、Aテーブルのみにあるレコード、Bテーブルのみにあるレコード、そしてAとB両方にあるレコードをCテーブルに追加する方法を教えて欲しいです。また、Cテーブルに対応するパターンを示す項目も追加する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
saru_さんの仰せられるとおり、Cを作成する理由が不明ですが、 もし、一度に作成するのなら、こんな感じで良いのでは? select A.key, A.・・・ , decode( B.xxx, null, 1, 3 ) -- 区分 from ・・・ B , ・・・ A where A.Key = B.Key(+) union all select B.key, B.・・・ , decode( A.xxx, null, 2, 3 ) -- 区分 from ・・・ A , ・・・ B where B.Key = A.Key(+) xxxはkey以外の項目で、Not Null の項目を使用すれば、 外部結合してますので、相手側にデータが存在するか 区別できるはずです。 それで、区分を判断すれば良いと思います。
その他の回答 (1)
- saru_
- ベストアンサー率39% (38/97)
回答No.1
質問を見る限りテーブルCを作成する理由が不明です。 職場の有識者に対して設計レビューして、変な設計をしていないかチェックしてもらった方がよいように思えます。 さて、ご質問の回答ですが 1) テーブルAの内容を全てテーブルCにselect into。「区分」は、とりあえず1に設定 2) テーブルBの内容を全てテーブルCにselect into。「区分」とりあえず2に設定 3) テーブルAとテーブルBをinner joinして、該当レコードの「区分」を3にupdate といった感じのSQLを書けば実現できると思います。