初めて自分の家と他人の家が違う、と意識した時

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

A 回答 (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.コード;

この回答への補足

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

補足日時:2006/07/24 16:36
    • good
    • 0

処理のスピード云々は、索引の有無など知らないと


何とも判りません。

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

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

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

お礼日時:2006/07/25 08:52

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

この回答への補足

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

補足日時:2006/07/24 16:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報