- ベストアンサー
SELECT文で条件にあったテーブルからデータを取得するには?
WinServer2003,WinXP,ORACLR10g使用しています。 SQL文の問合せ(SELECT)で、条件にあったテーブルを読みデータを取得するにはどのようなSQLの記述方法が良いでしょうか、お願いします。 3つのテーブルがあります。 Kdata,M_Fuku,M_Shokuhin KdataのデータのフィールドKkubunが 1の時はM_Fukuから,5の時はM_Shokuhinから品名のデータを取得したいです。 Kdata 1 コード 2 日付 3 区分 4 数量 5 単価 M_Fuku 1 コード 2 品名 M_Shokuhin 1 コード 2 品名 日付 区分 品名 数量 単価 金額 060710 1 ジャケット 1 5000 5000 060711 5 玉子 2 100 200 このようにしたいと思っています。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
素直に2つのテーブルを結合し、結果として欲しいフィールドを条件により選択すれば 良いかと思います。 select decode(Kdata.コード,1,M_Fuku.品名,5,M_Shokuhin.品名) as 品名 from Kdata,M_Fuku,M_Shokuhin where Kdata.区分=1 and Kdata.コード=M_Fuku.コード or Kdata.区分=5 and Kdata.コード=M_Shokuhin.コード;
その他の回答 (2)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
処理のスピード云々は、索引の有無など知らないと 何とも判りません。 まず、実行計画を見てください。(理想的な検索がされているか確認) 対処がから無ければ、再度質問されれば良いと思いますが、 その際は、実行計画の内容と索引の種類、各テーブルのデータ量等の 情報を付記してください。
お礼
回答ありがとうございます。 満足な結果が得られたので良いです。 スピード等は見直しが必要かと思いますので、自分なりにやってみます。 ありがとうございました。
- ossan_hiro
- ベストアンサー率66% (88/132)
KdataのKkubunが1のselect文とKkubunが5のselect文をunionで結合するのはどうでしょう?
補足
早速回答ありがとうございます。 unionで結合ですか、ちょっとやった事が無いので、調べて実行してみます。
補足
回答ありがとうございます。 実行した結果うまくいきました。 実際は、もう一つWHERE条件を追加して、GRIDに表示すると言う作業をしましたが、表示されるまで、時間がかかりすぎるので何か方法は無いでしょうか? M_Fuku、M_Shokuhin共に約40000件くらいのデータです。