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

回答編集履歴

5

コード修正

2016/08/07 04:33

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  HAVING SUM(
11
11
  CASE
12
12
  WHEN ingredient_code = 'abc' OR ingredient_code ='xxx'
13
- THEN 0 ELSE 1
13
+ THEN 1 ELSE 0
14
14
  END
15
15
  ) >= 2 /* この2は比較条件の数 */
16
16
  ```

4

コード修正

2016/08/07 04:33

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -19,9 +19,8 @@
19
19
  SELECT menu_code
20
20
  FROM table
21
21
  GROUP BY menu_code
22
- HAVING
23
- SUM(CASE WHEN ingredient_code = 'abc' THEN 1 ELSE 0 END) *
22
+ HAVING SUM(CASE WHEN ingredient_code = 'abc' THEN 1 ELSE 0 END) = 1
24
- SUM(CASE WHEN ingredient_code = 'xxx' THEN 1 ELSE 0 END) > 0
23
+ AND SUM(CASE WHEN ingredient_code = 'xxx' THEN 1 ELSE 0 END) = 1
25
24
 
26
25
  ```
27
26
  テーブル設計やデータ件数とその偏りに大きく影響を受けると思うので、サブクエリ利用より常に早いか?と問われると怪しいです(むしろサブクエリ利用のほうが早いケースが多いかも)

3

コード修正

2016/08/06 18:56

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  GROUP BY menu_code
22
22
  HAVING
23
23
  SUM(CASE WHEN ingredient_code = 'abc' THEN 1 ELSE 0 END) *
24
- SUM(CASE WHEN ingredient_code = 'xxx' THEN 1 ELSE 0 END) = 0
24
+ SUM(CASE WHEN ingredient_code = 'xxx' THEN 1 ELSE 0 END) > 0
25
25
 
26
26
  ```
27
27
  テーブル設計やデータ件数とその偏りに大きく影響を受けると思うので、サブクエリ利用より常に早いか?と問われると怪しいです(むしろサブクエリ利用のほうが早いケースが多いかも)

2

修正

2016/08/06 18:54

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,4 +1,5 @@
1
+ **当初投稿したものが間違っていたため再考したのですが、ましなコードは浮かびませんでした。
1
- **以下のコードでは目的を果たせません。失礼しました再考中**
2
+ ごり押気味な回答になっていすみません**
2
3
 
3
4
  サブクエリを使わないとなると、こんな感じでしょうか?
4
5
  (動作確認してません)
@@ -9,10 +10,18 @@
9
10
  HAVING SUM(
10
11
  CASE
11
12
  WHEN ingredient_code = 'abc' OR ingredient_code ='xxx'
12
- THEN 1 ELSE 0
13
+ THEN 0 ELSE 1
13
14
  END
14
- ) > 0
15
+ ) >= 2 /* この2は比較条件の数 */
15
16
  ```
17
+ または
18
+ ```SQL
19
+ SELECT menu_code
20
+ FROM table
21
+ GROUP BY menu_code
22
+ HAVING
23
+ SUM(CASE WHEN ingredient_code = 'abc' THEN 1 ELSE 0 END) *
16
- テーブル設計やデータ件数とその偏りに大きく影響を受けると思うので、サブクエリ利用より常に早いか?と問われると怪しいです(むしろサブクエリ利用のほうが早いケースが多いかも)
24
+ SUM(CASE WHEN ingredient_code = 'xxx' THEN 1 ELSE 0 END) = 0
17
25
 
26
+ ```
18
- ※havingになじみが無ければ、sumをselect持っててwheretureチェッでもるかも
27
+ テーブル設計やデータ件数とそ偏りく影響を受けると思うの、サブエリ利用より常に早か?と問われと怪しいです(むしろサブクエリ利用のほうが早いケースが多いかも)

1

修正

2016/08/06 18:53

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,3 +1,5 @@
1
+ **以下のコードでは目的を果たせません。失礼しました。再考中**
2
+
1
3
  サブクエリを使わないとなると、こんな感じでしょうか?
2
4
  (動作確認してません)
3
5
  ```SQL