• ベストアンサー

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まで返してきてどうしたら良いかわかりません。 宜しくお願いします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

下記でどうですか。 ---- select 製品ID from TB where 使用部品 in (1,2) group by 製品ID having count(*) = 2

greenpinkwhite
質問者

お礼

早速の回答ありがとうございます。 これで解決できました。 ありがとうございました。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

こんな感じじゃない? select distinct t1.製品ID from TB as t1 inner join TB as t2 on t1.製品ID=t2.製品ID and t1.使用部品=1 and t2.使用部品=2

greenpinkwhite
質問者

お礼

回答ありがとうございます。 勉強になりました。

回答No.3

select 製品ID from TB where 使用部品=1 and 製品ID in(select 製品ID from TB where 使用部品=2) でどうでしょうか。

greenpinkwhite
質問者

お礼

早速の回答ありがとうございます。 ありがとうございました。

回答No.1

select 製品ID from TB where 使用部品 in(1, 2) and 製品ID != 'C'

greenpinkwhite
質問者

お礼

早速の回答ありがとうございます。 製品IDはABC以外複数あります。 タイトルと説明が悪かったようです。 すいません。

greenpinkwhite
質問者

補足

製品IDはABC以外に複数あり、使用部品も123以外に複数あります。 その中から1つ以上指定した使用部品を含む製品IDを取り出したいです。

関連するQ&A