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

解決済みの質問

同一列からandでSELECTしたいのですが・・・

Oracle10gかMySQLでやることになるとおもいます。ひょっとしたらPostgeSQLかも???

_____担当_____商品_____売上品

_____XXXX_____1111______竹輪
_____XXXX_____1111______胡瓜
_____XXXX_____1111______西瓜
_____XXXX_____1111______ハンバーグ
_____YYYY_____2222______竹輪
_____YYYY_____2222______茄子
_____YYYY_____2222______西瓜
_____YYYY_____2222______生姜焼き
_____YYYY_____2222______柚子
_____ZZZZ_____3333______竹輪
_____ZZZZ_____3333______キャベツ
_____ZZZZ_____3333______胡瓜
_____ZZZZ_____3333______冬瓜

上記のようなテーブルがあるとします。
その中から売上品の項目しか分からないとします。売上品で”竹輪”と”胡瓜”を含んだ担当コードを出したいのですが・・・
例えば一つずつなら
select 担当, 商品, 売上品 from TableName where 売上品 = ”竹輪”;

_____XXXX_____1111______竹輪
_____YYYY_____2222______竹輪
_____ZZZZ_____3333______竹輪

select 担当, 商品, 売上品 from TableName where 売上品 = ”胡瓜”;

_____XXXX_____1111______胡瓜
_____ZZZZ_____3333______胡瓜

ですが売上品で”竹輪”と”胡瓜”を含んだものがほしいので結果としては
_____XXXX_____1111______竹輪
_____ZZZZ_____3333______竹輪
_____XXXX_____1111______胡瓜
_____ZZZZ_____3333______胡瓜
となります。和の集合のような感じでしょうか?ANY ALLでしょうか?
売上品の中で竹輪と胡瓜二つの要素を持った結果だけ欲しいのです。よくわからないので教えて下さい。

投稿日時 - 2008-07-23 00:26:24

QNo.4197103

困ってます

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

普通はサブクエリでやると思います。
「売上品で”竹輪”と”胡瓜”を含んだ担当コード」を抽出すればいいわけなので、

SELECT 担当, 商品, 売上品 FROM TableName
WHERE 担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '竹輪')
AND 担当 IN (SELECT 担当 FROM TableName WHERE 売上品 = '胡瓜')
AND 売上品 IN ('竹輪','胡瓜')

または

SELECT 担当, 商品, 売上品 FROM TableName
WHERE 売上品 IN ('竹輪','胡瓜')
AND 担当 IN (SELECT 担当 FROM TableName
WHERE 売上品 IN ('竹輪','胡瓜')
GROUP BY 担当
HAVING COUNT(DISTINCT 売上品)=2)

Oracleの例です。

投稿日時 - 2008-07-23 02:13:38

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

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

回答(1)

あなたにオススメの質問