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

解決済みの質問

紐付いているデータ

テーブルA 
料理   値段
-------------      
カレー  500
ラーメン 200
うどん  500

テーブルB
予算   値段
-----------------
1000   500
500    200
1000   500



上のようなA、B、2つのテーブルがあります。
任意に予算を入れたら、紐付いている値段の料理が出力されるような
SQL文を書きたいと考えています。
select * from テーブルA where 値段 = (select 値段 from
テーブルB where 任意の予算)
というようなSQLを書いてみたのですが、これだと予算が500円ならば
出力されますが、1000円だと2つレコードがあるので、うまく
表示されません。

これを、予算が1000円のものという条件を指定することで、
カレーとうどんが出力されるようなSQLを作るにはどうしたら
良いでしょうか?
ご教授ください。

投稿日時 - 2006-12-18 18:46:33

QNo.2610568

困ってます

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

副問合せから返ってくるレコード数が複数か単数かわからない場合は、=ではなく、INを使うと出るのではないでしょうか。

select * from テーブルA where 値段 in (select 値段 from
テーブルB where 任意の予算)

ただしこれだと1000円きっかりの時しか出ないので、もし「予算が1000円だったら値段が1000円以下のものを表示する」という風にするのであれば、

select * from テーブルA where 値段 <ANY (select 値段 from テーブルB where 任意の予算)

とするといいと思います。

投稿日時 - 2006-12-18 20:55:48

ANo.1

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

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

回答(1)