回答編集履歴
4
変更
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
```
|
23
23
|
|
24
24
|
RDBは、配列形式の項目が得意ではないので、テーブルを変更されるのは良いと思います。
|
25
|
-
上記はちょっと面倒なのでもう少し簡単なのを(ちょっと遅いですが)
|
25
|
+
上記はちょっと面倒なのでもう少し簡単なのを(大量件数だとちょっと遅いですが)
|
26
26
|
|
27
27
|
```sql
|
28
28
|
select m.id,
|
3
追加
answer
CHANGED
@@ -19,4 +19,16 @@
|
|
19
19
|
+------+-------+-------+--------+
|
20
20
|
1 row in set (0.01 sec)
|
21
21
|
|
22
|
+
```
|
23
|
+
|
24
|
+
RDBは、配列形式の項目が得意ではないので、テーブルを変更されるのは良いと思います。
|
25
|
+
上記はちょっと面倒なのでもう少し簡単なのを(ちょっと遅いですが)
|
26
|
+
|
27
|
+
```sql
|
28
|
+
select m.id,
|
29
|
+
(select spec from specs where specs.id=spec1) spec1,
|
30
|
+
(select spec from specs where specs.id=spec2) spec2,
|
31
|
+
...(略)
|
32
|
+
(select spec from specs where specs.id=spec10) spec10
|
33
|
+
from member m join ability a on ability_id=a.id where m.id=1;
|
22
34
|
```
|
2
変更
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
こんな感じでは、(略は同じにしていますが。。。)
|
2
2
|
|
3
3
|
```sql
|
4
|
-
select t1.* from member m join
|
4
|
+
select m.id, t1.* from member m join
|
5
5
|
( select a.id,
|
6
6
|
max(case when spec1=s.id then spec else null end) spec1,
|
7
7
|
max(case when spec2=s.id then spec else null end) spec2,
|
1
変更
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
max(case when spec10=s.id then spec else null end) spec10
|
10
10
|
from ability a cross join specs s where s.id in (spec1,spec2,...(略),spec10)
|
11
11
|
group by 1) t1
|
12
|
-
|
12
|
+
on ability_id=t1.id
|
13
13
|
where m.id=1;
|
14
14
|
|
15
15
|
+------+-------+-------+--------+
|