質問編集履歴
11
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# 質問
|
2
|
-
りんご2個以上
|
2
|
+
「りんご2個以上」かつ「バナナ2個以上」を持っているユーザIDを取得したいです。
|
3
3
|
|
4
4
|
以下データの場合、結果としてuser_id=2が得られることを期待していますが思ったような結果が得られません。
|
5
5
|
(期待する結果を得られるSQLは完成しましたが効率が悪いように思います。改善点や最適な方法が知りたいです。)
|
10
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
今回のようなケースではどのようなSQLが最適でしょうか?
|
75
75
|
|
76
76
|
※追記
|
77
|
-
以下SQL004でも期待する結果が取れて少しSQLが綺麗になったかと思いましたがりんごが1個、バナナが3個(またはそれ以外の4個以上のパターン)でも結果が0件にならないのでダメでした。
|
77
|
+
以下SQL004でも期待する結果が取れて少しSQLが綺麗になったかと思いましたがりんごが1個、バナナが3個(またはそれ以外の合計が4個以上のパターン)でも結果が0件にならないのでダメでした。
|
78
78
|
```
|
79
79
|
/* SQL004 */
|
80
80
|
select
|
9
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# 質問
|
2
|
-
りんご2個、バナナ2個を持っているユーザIDを取得したいです。
|
2
|
+
りんご2個以上、バナナ2個以上を持っているユーザIDを取得したいです。
|
3
3
|
|
4
4
|
以下データの場合、結果としてuser_id=2が得られることを期待していますが思ったような結果が得られません。
|
5
5
|
(期待する結果を得られるSQLは完成しましたが効率が悪いように思います。改善点や最適な方法が知りたいです。)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
# 試したこと
|
33
33
|
以下SQL001は結果が0件です。
|
34
|
-
りんごが2個のwhere条件で既に結果にバナナが含まれていない為、2つめのバナナに関するwhere条件を満たせず0件になったと思われます。
|
34
|
+
りんごが2個以上のwhere条件で既に結果にバナナが含まれていない為、2つめのバナナに関するwhere条件を満たせず0件になったと思われます。
|
35
35
|
|
36
36
|
```sql
|
37
37
|
/* SQL001 */
|
@@ -74,7 +74,7 @@
|
|
74
74
|
今回のようなケースではどのようなSQLが最適でしょうか?
|
75
75
|
|
76
76
|
※追記
|
77
|
-
以下SQL004でも期待する結果が取れて少しSQLが綺麗になったかと思いましたがりんごが1個、バナナが3個でも結果が0件にならないのでダメでした。
|
77
|
+
以下SQL004でも期待する結果が取れて少しSQLが綺麗になったかと思いましたがりんごが1個、バナナが3個(またはそれ以外の4個以上のパターン)でも結果が0件にならないのでダメでした。
|
78
78
|
```
|
79
79
|
/* SQL004 */
|
80
80
|
select
|
@@ -85,7 +85,7 @@
|
|
85
85
|
group by
|
86
86
|
i.user_id
|
87
87
|
having
|
88
|
-
sum(i.num) = 4
|
88
|
+
sum(i.num) >= 4
|
89
89
|
```
|
90
90
|
|
91
91
|
# 環境
|
8
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
今回のようなケースではどのようなSQLが最適でしょうか?
|
75
75
|
|
76
76
|
※追記
|
77
|
-
以下SQL004でも期待する結果が取れて少しSQLが
|
77
|
+
以下SQL004でも期待する結果が取れて少しSQLが綺麗になったかと思いましたがりんごが1個、バナナが3個でも結果が0件にならないのでダメでした。
|
78
78
|
```
|
79
79
|
/* SQL004 */
|
80
80
|
select
|
7
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -73,5 +73,20 @@
|
|
73
73
|
|
74
74
|
今回のようなケースではどのようなSQLが最適でしょうか?
|
75
75
|
|
76
|
+
※追記
|
77
|
+
以下SQL004でも期待する結果が取れて少しSQLがきれいになったかと思いましたがりんごが1個、バナナが3個でも一致していました。
|
78
|
+
```
|
79
|
+
/* SQL004 */
|
80
|
+
select
|
81
|
+
i.user_id
|
82
|
+
from items i
|
83
|
+
where
|
84
|
+
(i.name = 'りんご') or (i.name = 'バナナ')
|
85
|
+
group by
|
86
|
+
i.user_id
|
87
|
+
having
|
88
|
+
sum(i.num) = 4
|
89
|
+
```
|
90
|
+
|
76
91
|
# 環境
|
77
92
|
- MariaDB 10.5.9
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
`user_id` INT(11) UNSIGNED NOT NULL,
|
13
13
|
`name` VARCHAR(16) NOT NULL COLLATE 'utf8_general_ci',
|
14
14
|
`num` INT(11) UNSIGNED NOT NULL,
|
15
|
-
INDEX `
|
15
|
+
INDEX `name` (`name`) USING BTREE
|
16
16
|
)
|
17
17
|
COLLATE='utf8_general_ci'
|
18
18
|
ENGINE=InnoDB
|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
`user_id` INT(11) UNSIGNED NOT NULL,
|
13
13
|
`name` VARCHAR(16) NOT NULL COLLATE 'utf8_general_ci',
|
14
14
|
`num` INT(11) UNSIGNED NOT NULL,
|
15
|
-
INDEX `
|
15
|
+
INDEX `user_id` (`name`) USING BTREE
|
16
16
|
)
|
17
17
|
COLLATE='utf8_general_ci'
|
18
18
|
ENGINE=InnoDB
|
4
タグ追加
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
```sql
|
37
37
|
/* SQL001 */
|
38
38
|
select
|
39
|
-
|
39
|
+
i.user_id
|
40
40
|
from items i
|
41
41
|
where
|
42
42
|
(i.name = 'りんご' and i.num >= 2) and
|
@@ -48,7 +48,7 @@
|
|
48
48
|
```sql
|
49
49
|
/* SQL002 */
|
50
50
|
select
|
51
|
-
|
51
|
+
i.user_id
|
52
52
|
from items i
|
53
53
|
where
|
54
54
|
(i.name = 'りんご' and i.num >= 2) and
|
@@ -64,7 +64,7 @@
|
|
64
64
|
```sql
|
65
65
|
/* SQL003 */
|
66
66
|
select
|
67
|
-
|
67
|
+
i.user_id
|
68
68
|
from items i
|
69
69
|
where
|
70
70
|
(i.name = 'りんご' and i.num >= 2) and
|
2
環境追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -71,4 +71,7 @@
|
|
71
71
|
i.user_id in (select user_id from items where (name = 'バナナ' and num >= 2))
|
72
72
|
```
|
73
73
|
|
74
|
-
今回のようなケースではどのようなSQLが最適でしょうか?
|
74
|
+
今回のようなケースではどのようなSQLが最適でしょうか?
|
75
|
+
|
76
|
+
# 環境
|
77
|
+
- MariaDB 10.5.9
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
# 試したこと
|
33
33
|
以下SQL001は結果が0件です。
|
34
|
-
りんごが2
|
34
|
+
りんごが2個のwhere条件で既に結果にバナナが含まれていない為、2つめのバナナに関するwhere条件を満たせず0件になったと思われます。
|
35
35
|
|
36
36
|
```sql
|
37
37
|
/* SQL001 */
|