質問編集履歴
6
微調整した
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,17 +30,17 @@
|
|
30
30
|
```
|
31
31
|
|id|title|category_id|
|
32
32
|
|:--|:--:|--:|
|
33
|
-
|1|
|
33
|
+
|1|シーフードカレー|1|
|
34
|
-
|1|
|
34
|
+
|1|シーフードカレー|2|
|
35
|
-
|1|
|
35
|
+
|1|シーフードカレー|3|
|
36
|
-
|2|
|
36
|
+
|2|肉じゃが|1|
|
37
|
-
|2|
|
37
|
+
|2|肉じゃが|2|
|
38
38
|
|
39
39
|
やりたいことはitemsのidを重複しない取得をしたいです。
|
40
40
|
|id|title|category_id|
|
41
41
|
|:--|:--:|--:|
|
42
|
+
|1|シーフードカレー|1|
|
42
|
-
|1|
|
43
|
+
|1|肉じゃが|1|
|
43
|
-
|1|品物B|1|
|
44
44
|
|
45
45
|
GROUP BYなどでグルーピングする方法も調べたら出てきたのですが、
|
46
46
|
このほかにも複数のテーブルをJOINしたり取得するカラムも別テーブルの項目を取得したいためGROUP BYを使用するとエラーになりうまくいきませんでした。
|
@@ -80,17 +80,17 @@
|
|
80
80
|
|
81
81
|
|id|title|category_id|
|
82
82
|
|:--|:--:|--:|
|
83
|
-
|2|
|
83
|
+
|2|肉じゃが|1|
|
84
|
-
|2|
|
84
|
+
|2|肉じゃが|2|
|
85
|
-
|1|
|
85
|
+
|1|シーフードカレー|1|
|
86
|
-
|1|
|
86
|
+
|1|シーフードカレー|2|
|
87
87
|
|
88
88
|
これを
|
89
89
|
|
90
90
|
|id|title|category_id|
|
91
91
|
|:--|:--:|--:|
|
92
|
-
|1|
|
92
|
+
|1|肉じゃが|1|
|
93
|
-
|2|
|
93
|
+
|2|シーフードカレー|1|
|
94
94
|
|
95
95
|
このようにできて一覧表示用の重複のないデータにできないかと考えておりました。
|
96
96
|
説明わかりづらく大変申し訳ありません。
|
5
微調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,10 +12,10 @@
|
|
12
12
|
|id|item_id|category_id|
|
13
13
|
|:--|:--:|--:|
|
14
14
|
|1|1|1|
|
15
|
-
|
|
15
|
+
|2|1|2|
|
16
|
-
|
|
16
|
+
|3|1|3|
|
17
|
-
|
|
17
|
+
|4|2|1|
|
18
|
-
|
|
18
|
+
|5|2|2|
|
19
19
|
|
20
20
|
categoriesテーブル
|
21
21
|
|id|category_name|
|
@@ -33,8 +33,8 @@
|
|
33
33
|
|1|品物A|1|
|
34
34
|
|1|品物A|2|
|
35
35
|
|1|品物A|3|
|
36
|
-
|
|
36
|
+
|2|品物B|1|
|
37
|
-
|
|
37
|
+
|2|品物B|2|
|
38
38
|
|
39
39
|
やりたいことはitemsのidを重複しない取得をしたいです。
|
40
40
|
|id|title|category_id|
|
@@ -80,10 +80,10 @@
|
|
80
80
|
|
81
81
|
|id|title|category_id|
|
82
82
|
|:--|:--:|--:|
|
83
|
+
|2|品物B|1|
|
84
|
+
|2|品物B|2|
|
83
85
|
|1|品物A|1|
|
84
86
|
|1|品物A|2|
|
85
|
-
|2|品物B|1|
|
86
|
-
|2|品物B|2|
|
87
87
|
|
88
88
|
これを
|
89
89
|
|
4
微調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -77,16 +77,20 @@
|
|
77
77
|
```
|
78
78
|
上記のようにSQL(当初考えた)が変化します。
|
79
79
|
複数の条件にマッチした同様のアイテム情報がレコードに出てきてしまうので
|
80
|
+
|
80
81
|
|id|title|category_id|
|
81
82
|
|:--|:--:|--:|
|
82
83
|
|1|品物A|1|
|
83
84
|
|1|品物A|2|
|
84
85
|
|2|品物B|1|
|
85
86
|
|2|品物B|2|
|
87
|
+
|
86
88
|
これを
|
89
|
+
|
87
90
|
|id|title|category_id|
|
88
91
|
|:--|:--:|--:|
|
89
92
|
|1|品物A|1|
|
90
93
|
|2|品物B|1|
|
94
|
+
|
91
95
|
このようにできて一覧表示用の重複のないデータにできないかと考えておりました。
|
92
96
|
説明わかりづらく大変申し訳ありません。
|
3
微調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
itemsテーブル
|
5
5
|
|id|title|
|
6
6
|
|:-|:--:|
|
7
|
-
|1|
|
7
|
+
|1|シーフードカレー|
|
8
|
-
|2|
|
8
|
+
|2|肉じゃが|
|
9
9
|
|3|品物C|
|
10
10
|
|
11
11
|
category_itemテーブル
|
@@ -20,15 +20,13 @@
|
|
20
20
|
categoriesテーブル
|
21
21
|
|id|category_name|
|
22
22
|
|:-|:--:|
|
23
|
-
|1|肉|
|
23
|
+
|1|肉類|
|
24
|
-
|2|魚|
|
25
|
-
|
|
24
|
+
|2|野菜類|
|
25
|
+
|3|魚介類|
|
26
26
|
|
27
27
|
上記をJOINしてくると以下のような結果になるかと思います。
|
28
28
|
```sql
|
29
|
-
SELECT i.id, i.title, ci.category_id FROM items AS i
|
29
|
+
SELECT i.id, i.title, ci.category_id FROM items AS i INNER JOIN category_item AS ci ON i.id = ci.item_id
|
30
|
-
LEFT JOIN
|
31
|
-
category_item AS ci ON i.id = ci.id;
|
32
30
|
```
|
33
31
|
|id|title|category_id|
|
34
32
|
|:--|:--:|--:|
|
@@ -55,4 +53,40 @@
|
|
55
53
|
**補足**
|
56
54
|
MySQL5.7になります。
|
57
55
|
タイトルを調整いたしました。
|
56
|
+
SELECT文が間違えていたので修正しました。
|
57
|
+
カテゴリー名が分かりづらかったので修正しました
|
58
58
|
|
59
|
+
**補足2**
|
60
|
+
通常であれば、絞り込み検索で検索されない限り
|
61
|
+
```sql
|
62
|
+
SELECT i.id, i.title FROM items AS i ORDER BY i.id DESC;
|
63
|
+
```
|
64
|
+
上記のようなSELECT文で一覧を出力させますが、絞り込み検索でチェックボックスでカテゴリーを選択した際に、
|
65
|
+
```sql
|
66
|
+
SELECT
|
67
|
+
i.id, i.title, ci.category_id
|
68
|
+
FROM
|
69
|
+
items AS i
|
70
|
+
INNER JOIN
|
71
|
+
category_item AS ci ON i.id = ci.item_id
|
72
|
+
WHERE
|
73
|
+
ci.category_id = 2
|
74
|
+
OR
|
75
|
+
ci.category_id = 1
|
76
|
+
ORDER BY i.id DESC
|
77
|
+
```
|
78
|
+
上記のようにSQL(当初考えた)が変化します。
|
79
|
+
複数の条件にマッチした同様のアイテム情報がレコードに出てきてしまうので
|
80
|
+
|id|title|category_id|
|
81
|
+
|:--|:--:|--:|
|
82
|
+
|1|品物A|1|
|
83
|
+
|1|品物A|2|
|
84
|
+
|2|品物B|1|
|
85
|
+
|2|品物B|2|
|
86
|
+
これを
|
87
|
+
|id|title|category_id|
|
88
|
+
|:--|:--:|--:|
|
89
|
+
|1|品物A|1|
|
90
|
+
|2|品物B|1|
|
91
|
+
このようにできて一覧表示用の重複のないデータにできないかと考えておりました。
|
92
|
+
説明わかりづらく大変申し訳ありません。
|
2
タイトルを調整しました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
MySQLの「
|
1
|
+
MySQLの「多対多」の絞り込みで、重複しないレコードを取得したい
|
test
CHANGED
@@ -54,4 +54,5 @@
|
|
54
54
|
|
55
55
|
**補足**
|
56
56
|
MySQL5.7になります。
|
57
|
+
タイトルを調整いたしました。
|
57
58
|
|
1
バージョンを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,3 +52,6 @@
|
|
52
52
|
良き方法ご存知でしたらご教授いただきたいです。
|
53
53
|
よろしくお願いします。
|
54
54
|
|
55
|
+
**補足**
|
56
|
+
MySQL5.7になります。
|
57
|
+
|