こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2006-07-24 11:55:36

QNo.2295829

困ってます

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

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

投稿日時 - 2006-07-24 15:01:58

補足

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

投稿日時 - 2006-07-24 16:36:16

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

処理のスピード云々は、索引の有無など知らないと
何とも判りません。

まず、実行計画を見てください。(理想的な検索がされているか確認)

対処がから無ければ、再度質問されれば良いと思いますが、
その際は、実行計画の内容と索引の種類、各テーブルのデータ量等の
情報を付記してください。

投稿日時 - 2006-07-24 18:00:26

お礼

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

投稿日時 - 2006-07-25 08:52:43

ANo.1

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

投稿日時 - 2006-07-24 12:50:54

補足

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

投稿日時 - 2006-07-24 16:33:50

あなたにオススメの質問