• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルから複数のレコードにマッチする条件)

テーブルから複数のレコードにマッチする条件

このQ&Aのポイント
  • 複数のレコードにマッチする条件をテーブルから取得する方法について
  • SQL文を使用してテーブルから複数のレコードにマッチする条件を取得する方法について
  • テーブルから複数のレコードにマッチする条件を検索する方法について

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

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

>valueが「1」かつ「2」のデータを検索する この命題では日本語としてなりたたない なんとなく言いたいことはわかるのだけど条件提示が杜撰すぎ 以下のどれかだと推測します (1)valueが1および2を含むデータをすべて抽出 →仮に別途value=3のデータがあたったらそれも抽出 (2)valueが1および2を含むデータの内、1,2に該当するデータのみ抽出 →仮に別途value=3のデータがあってもむし (3)valueが1および2しかないデータを抽出 →仮に別途value=3のデータがあったら1,2に合致しても抽出しない たぶん(2)なんだろうなぁということで以下 //元データ create table table_a (id int,data varchar(20)); insert into table_a values(1,'a1'),(2,'a2'),(3,'a3'); create table table_b (id int,aid int,value int); insert into table_b values(1,1,1),(2,1,2),(3,1,3),(4,2,1),(5,2,2),(6,3,1),(6,3,3); //単純な表示 SELECT * FROM table_a WHERE table_a.id in (SELECT aid FROM table_b where value in (1,2) group by aid having count(distinct value)=2 ) //table_bの情報も含めた表示 SELECT * FROM table_a INNER JOIN table_b ON table_a.id = table_b.aid and value in (1,2) WHERE table_a.id in (SELECT aid FROM table_b where value in (1,2) group by aid having count(distinct value)=2 )

ok-rjak
質問者

お礼

杜撰な説明にも関わらず意図をくみ取っていただき有難うございます。 まさしく仰るとおり(2)で、しかも単純な表示の方でOKです。 やりたいことはぼんやりわかるのですが、それをSQLで表現するのが、自分はまだまだ未熟だと実感します。 こうして提示していただき、ひとつひとつかみ砕いて理解していき、最終的に思うとおりの結果に繋がりました。 本当に有難うございました!

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

> valueが「1」かつ「2」のデータを検索する場合は、どのようにWHERE句を書けばいいのでしょうか。 これでは車屋さんに行って、「ATかつMTの車を探してください」と言っているのと同じです。 valueには1つの値しか入りませんので、「valueが1かつ2」という状態はあり得ません。 検索条件を一度よく整理してみてください。

ok-rjak
質問者

補足

少し説明が足りなかったようです。申し訳ありません。 table_bにaidが同一で、valueが違うデータが複数件挿入されています。 aidが同一で、valueが「1」と「2」のレコードを持つデータの情報をtable_aから抜き出したいということなのです。