回答編集履歴

7

追記

2015/12/23 12:33

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -16,6 +16,20 @@
16
16
 
17
17
  ※「COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的に設定する必要があります。
18
18
 
19
+ ```SQL
20
+
21
+ SELECT user_id
22
+
23
+ FROM gacha
24
+
25
+ WHERE name IN ('ぴかぴかの剣', 'ぴかぴかの服')
26
+
27
+ GROUP BY user_id
28
+
29
+ HAVING COUNT(DISTINCT name) = 2 AND COUNT(*) =2;
30
+
31
+ ```
32
+
19
33
 
20
34
 
21
35
  --大幅に勘違いしていたので書き直しました。

6

表現の修正

2015/12/23 12:33

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -14,8 +14,8 @@
14
14
 
15
15
  ```
16
16
 
17
- 「COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的に設定する必要があります。
17
+ 「COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的に設定する必要があります。
18
18
 
19
19
 
20
20
 
21
- --20151223 21:18 大幅に勘違いしていたので書き直しました。
21
+ --大幅に勘違いしていたので書き直しました。

5

修正

2015/12/23 12:29

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -1 +1,21 @@
1
+ 種類数とレコード数の両方を評価するように変更してみてはいかがでしょうか?
2
+
3
+ ```SQL
4
+
5
+ SELECT user_id
6
+
7
+ FROM gacha
8
+
9
+ WHERE name IN ('ぴかぴかの剣', 'ぴかぴかの剣')
10
+
11
+ GROUP BY user_id
12
+
13
+ HAVING COUNT(DISTINCT name) = 1 AND COUNT(*) =2;
14
+
15
+ ```
16
+
17
+ 「COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的に設定する必要があります。
18
+
19
+
20
+
1
- すみません。書いていたコード動作なかっので修正中です
21
+ --20151223 21:18 大幅に勘違ていた書き直ました。

4

修正中

2015/12/23 12:27

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -1,21 +1 @@
1
- 種類数とレコード数の両方を評価するように変更してみてはいかがでしょうか?
2
-
3
- ```SQL
4
-
5
- SELECT user_id
6
-
7
- FROM gacha
8
-
9
- WHERE name IN ('ぴかぴかの剣', 'ぴかぴかの剣')
10
-
11
- GROUP BY user_id
12
-
13
- HAVING COUNT(DISTINCT name) = 1 AND COUNT(*) =2;
14
-
15
- ```
16
-
17
- 「COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的に設定する必要があります。
18
-
19
-
20
-
21
- --20151223 21:18 大幅に勘違ていた書き直ました。
1
+ すみません。書いていたコード動作なかっので修正中です

3

コードと表現の修正

2015/12/23 12:24

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -1,39 +1,21 @@
1
- プログラム側がどなっているの分からないの、状況にマッチするは分かりませんが
1
+ 種類数とレコード数の両方を評価するよに変更しみてはいかしょう
2
2
 
3
3
  ```SQL
4
4
 
5
+ SELECT user_id
6
+
7
+ FROM gacha
8
+
9
+ WHERE name IN ('ぴかぴかの剣', 'ぴかぴかの剣')
10
+
11
+ GROUP BY user_id
12
+
5
- HAVING COUNT(DISTINCT name) = 2;
13
+ HAVING COUNT(DISTINCT name) = 1 AND COUNT(*) =2;
6
14
 
7
15
  ```
8
16
 
9
- これが2」なのは条件項目が「name IN ('ぴかぴかの剣', 'ぴかぴかの服')」このよう2つだからなのでよね?
17
+ COUNT(DISTINCT name) = 1」この部分は種類数を、「COUNT(*) =2」この部分は合計数をそれぞれプログラムで動的設定る必要があります。
10
18
 
11
- もし仮に、「name IN ('ぴかぴかの剣', 'ぼろぼろの服', 'ぴかぴかの服')」のように3つと一致させる場合は上記の値も「3」にしなければならず、プログラム側でSQLを生成するときに3にすると思うのですよ。
12
19
 
13
- ならば、「name IN ('ぴかぴかの剣', 'ぴかぴかの剣')」これは2つあっても実質1つなのだから、プログラムでリスト内の一意な値を数えてそれをセットすれば良いのではないでしょうか?
14
20
 
15
- ```SQL
16
-
17
- SELECT
18
-
19
- user_id
20
-
21
- FROM
22
-
23
- gacha
24
-
25
- WHERE
26
-
27
- name IN ('ぴかぴかの剣', 'ぴかぴかの剣')
28
-
29
- GROUP BY
30
-
31
- user_id
32
-
33
- HAVING
34
-
35
- COUNT(DISTINCT name) = 1;
36
-
37
- ```
38
-
39
- その場合はINの括弧の中身も1つにすると思いすけども
21
+ --20151223 21:18 大幅に勘違いていたので書き直しました。

2

表現修正

2015/12/23 12:21

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -35,3 +35,5 @@
35
35
  COUNT(DISTINCT name) = 1;
36
36
 
37
37
  ```
38
+
39
+ しかしその場合はINの括弧の中身も1つにすると思いますけども

1

コード修正

2015/12/23 11:59

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  WHERE
26
26
 
27
- name IN ('ぴかぴかの剣', 'ぴかぴかの')
27
+ name IN ('ぴかぴかの剣', 'ぴかぴかの')
28
28
 
29
29
  GROUP BY
30
30