プロが教えるわが家の防犯対策術!

Oracle10gで開発をしています。

1本のSQLで下記のような結果を返したいのですが、
やり方がわかりません。
どなたかご教授頂けないでしょうか?

Aテーブル
No  注文番号 品番 在庫数 注文数
-  ---- -- --- ---
1   001   a001  10    0
2   002   a001  5     5
3   003   b001  10    10
4   004   c001  5     2
5   005   d001  20    0

SELECT *
FROM Aテーブル
WHERE
在庫数 - 注文数 > 0

結果
No  注文番号 品番 在庫数 注文数
-  ---- -- --- ---
1   001   a001  10    0
4   004   c001  5     2
5   005   d001  20    0

となりますが、
これを

結果
No  注文番号 品番 在庫数 注文数
-  ---- -- --- ---
1   001   a001  10    0
2   002   a001  5     5
4   004   c001  5     2
5   005   d001  20    0

という風に、1番目の結果+1番目の結果にある商品の
他レコードも抽出したいのですが、どうしたらよいでしょうか?

A 回答 (2件)

SELECT *


FROM Aテーブル a
WHERE
EXISTS(SELECT 1 FROM Aテーブル b
WHERE
在庫数 - 注文数 > 0 AND
a.品番 = b.品番)
    • good
    • 0
この回答へのお礼

EXISTSというやり方があるのですね。。。
早速試してみます。
ありがとうございました。

お礼日時:2005/06/15 20:11

ご自分で書いたとおり、


(1)一番目の結果を求める。
(2)1番目の結果から再度対象を検索する
とすれば良いわけで、次のようなSQLで良いかと思います。

select * from Aテーブル
where 品番 in (select 品番 from Aテーブル where 在庫数 - 注文数 > 0)
    • good
    • 0
この回答へのお礼

WHERE句でINしちゃえばいいのですね。。。
k_o_r_o_c_h_a_n様のように(1)、(2)と順を追って、
考えなくてはいけませんね。。。
ありがとうございました。

お礼日時:2005/06/15 20:11

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

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