- ベストアンサー
Cは返して欲しくない
SQL初心者です。 製品ID 使用部品 A 1 A 2 A 3 B 1 B 2 C 1 というテーブルから、 指定した部品を使用している製品IDを取り出したいです。 例えば、1と2を指定した場合に、AとBを返して欲しいのですが、 どういったクエリを書けば良いのでしょうか? select 製品ID from TB where 使用部品=1 or 使用部品=2 とすると当然ながらCまで返してきてどうしたら良いかわかりません。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
下記でどうですか。 ---- select 製品ID from TB where 使用部品 in (1,2) group by 製品ID having count(*) = 2
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
こんな感じじゃない? select distinct t1.製品ID from TB as t1 inner join TB as t2 on t1.製品ID=t2.製品ID and t1.使用部品=1 and t2.使用部品=2
お礼
回答ありがとうございます。 勉強になりました。
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
select 製品ID from TB where 使用部品=1 and 製品ID in(select 製品ID from TB where 使用部品=2) でどうでしょうか。
お礼
早速の回答ありがとうございます。 ありがとうございました。
- taka451213
- ベストアンサー率47% (436/922)
select 製品ID from TB where 使用部品 in(1, 2) and 製品ID != 'C'
お礼
早速の回答ありがとうございます。 製品IDはABC以外複数あります。 タイトルと説明が悪かったようです。 すいません。
補足
製品IDはABC以外に複数あり、使用部品も123以外に複数あります。 その中から1つ以上指定した使用部品を含む製品IDを取り出したいです。
お礼
早速の回答ありがとうございます。 これで解決できました。 ありがとうございました。