回答編集履歴

1 追記

ngyuki

ngyuki score 4403

2015/08/04 13:48  投稿

一つの料理に対して同じ素材が重複してない前提があるなら(一意性制約とかで)、次のように in で条件の素材を羅列して、having で条件の数を指定する、とかでできないでしょうか。
```
```sql
select A.id, A.cook from A
 inner join C on A.id = C.aid
 inner join B on B.id = C.bid
where B.material in ('リンゴ', 'ハチミツ')
where B.id in (1, 3)
group by A.id, A.cook
having count(*) = 2
```
```
distinct で重複を除外してもいいかもしれません。
```sql
select A.id, A.cook
from A
 inner join C on A.id = C.aid
 inner join B on B.id = C.bid
where B.id in (1, 3)
group by A.id, A.cook
having count(distinct B.id) = 2;
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る