teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2015/08/04 04:48

投稿

ngyuki
ngyuki

スコア4516

answer CHANGED
@@ -1,10 +1,23 @@
1
1
  一つの料理に対して同じ素材が重複してない前提があるなら(一意性制約とかで)、次のように in で条件の素材を羅列して、having で条件の数を指定する、とかでできないでしょうか。
2
2
 
3
- ```
3
+ ```sql
4
4
  select A.id, A.cook from A
5
5
  inner join C on A.id = C.aid
6
6
  inner join B on B.id = C.bid
7
- where B.material in ('リンゴ', 'ハチミツ')
7
+ where B.id in (1, 3)
8
8
  group by A.id, A.cook
9
9
  having count(*) = 2
10
- ```
10
+ ```
11
+
12
+ distinct で重複を除外してもいいかもしれません。
13
+
14
+ ```sql
15
+ select A.id, A.cook
16
+ from A
17
+ inner join C on A.id = C.aid
18
+ inner join B on B.id = C.bid
19
+ where B.id in (1, 3)
20
+ group by A.id, A.cook
21
+ having count(distinct B.id) = 2;
22
+ ```
23
+