回答編集履歴

2

追記2

2018/01/30 01:24

投稿

sk_3122
sk_3122

スコア1126

test CHANGED
@@ -22,11 +22,9 @@
22
22
 
23
23
 
24
24
 
25
- ----
26
25
 
27
26
 
28
-
29
- 追記
27
+ # 追記
30
28
 
31
29
 
32
30
 
@@ -43,3 +41,77 @@
43
41
 
44
42
 
45
43
  でもテーブル構造を変更できるなら、そちらの方が良いと思いますよ。
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+ # 追記2
52
+
53
+
54
+
55
+ #### 現状
56
+
57
+
58
+
59
+ ```
60
+
61
+ ■sample1
62
+
63
+
64
+
65
+ |user_id |name |color |
66
+
67
+ |01 |a |1,2 |
68
+
69
+ |02 |a |1 |
70
+
71
+ ```
72
+
73
+
74
+
75
+ #### 修正案
76
+
77
+
78
+
79
+ ```
80
+
81
+ ■sample1
82
+
83
+
84
+
85
+ |user_id |name |
86
+
87
+ |01 |a |
88
+
89
+ |02 |a |
90
+
91
+
92
+
93
+ ■sample1color
94
+
95
+
96
+
97
+ |user_id |color |
98
+
99
+ |01 |1 |
100
+
101
+ |01 |2 |
102
+
103
+ |02 |1 |
104
+
105
+
106
+
107
+ ```
108
+
109
+
110
+
111
+ ...あれ、キーは user_id で良いんでしょうか。name も含みます?
112
+
113
+ (同じuser_idで、name の違うレコードが存在したりしますか?)
114
+
115
+
116
+
117
+ まあ とりあえずこういう形にして、sample1, sample1color, color を join して出す、のが良いと思います。

1

追記

2018/01/30 01:24

投稿

sk_3122
sk_3122

スコア1126

test CHANGED
@@ -19,3 +19,27 @@
19
19
  ※なお、既存のシステムが元々こういう造りになっていて今から直すのは難しい・・・というのであれば仕方ありませんが、新規に実装しているのであれば yambejp さんが書かれているように設計を変えた方が良いと思います。
20
20
 
21
21
  1つのカラムに複数の値を保持する方法は 一般的にあまりよくない設計とされています。
22
+
23
+
24
+
25
+ ----
26
+
27
+
28
+
29
+ 追記:
30
+
31
+
32
+
33
+ うーん... テーブル構造を変えるのが無理なら、以下の感じでしょうか。
34
+
35
+
36
+
37
+ 1. color, sample1 は join しないで 別々に取ってくる。(クエリを2回発行)
38
+
39
+ 2. php のコードで、sample1 をLOOPでまわして 一行ずつ処理。
40
+
41
+ sample1.color をカンマで分割して、color テーブルの値から 対応する colorname を取得する。
42
+
43
+
44
+
45
+ でもテーブル構造を変更できるなら、そちらの方が良いと思いますよ。