• ベストアンサー

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 このようにしたいと思っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

素直に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.コード;

noname#69946
質問者

補足

回答ありがとうございます。 実行した結果うまくいきました。 実際は、もう一つWHERE条件を追加して、GRIDに表示すると言う作業をしましたが、表示されるまで、時間がかかりすぎるので何か方法は無いでしょうか? M_Fuku、M_Shokuhin共に約40000件くらいのデータです。

その他の回答 (2)

回答No.3

処理のスピード云々は、索引の有無など知らないと 何とも判りません。 まず、実行計画を見てください。(理想的な検索がされているか確認) 対処がから無ければ、再度質問されれば良いと思いますが、 その際は、実行計画の内容と索引の種類、各テーブルのデータ量等の 情報を付記してください。

noname#69946
質問者

お礼

回答ありがとうございます。 満足な結果が得られたので良いです。 スピード等は見直しが必要かと思いますので、自分なりにやってみます。 ありがとうございました。

回答No.1

KdataのKkubunが1のselect文とKkubunが5のselect文をunionで結合するのはどうでしょう?

noname#69946
質問者

補足

早速回答ありがとうございます。 unionで結合ですか、ちょっとやった事が無いので、調べて実行してみます。

関連するQ&A