質問編集履歴
1
頂いた修正依頼をもとに「質問用のもっと簡易化した状態で、どういうJSON型のデータからどういう結合がしたいのか」を例示
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,30 +7,35 @@
|
|
7
7
|
|
8
8
|
※case1に関し、中間テーブルを挟む事でデータ量が多くなるのかなと思っています。case2に関し、json型で格納することを推奨しない旨の記事をいくつか見受けられました。
|
9
9
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-19/9506dc9e-9a43-48c4-90f4-a2a6761dd17c.png)
|
10
|
+
|
10
11
|
## 質問2
|
11
12
|
case1を実装する際に、json配列を外部キーにしてjoinする方法を生sqlで記述する方法で躓いています。
|
12
|
-
【
|
13
|
-
|
14
|
-
![
|
13
|
+
【やりたいこと】
|
14
|
+
userテーブルのitem_id(json_array)を外部キーとして、itemテーブルとjoinしたい。
|
15
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-19/77ad5730-2520-41da-a55f-666a57e37b1a.png)
|
15
16
|
|
16
|
-
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-19/
|
17
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-19/be529faa-dfe1-41a6-9fcb-cf4895ecf315.png)
|
18
|
+
【上記のjoinをしたい理由】
|
19
|
+
最終的にやりたい事は、例えば「user_id=1のユーザーが持っているitem_nameの一覧を表示させる」といった事なので、下の画像のようなテーブルを構成する必要があると考えている為です。
|
20
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-19/cf819035-abfc-4377-acdc-92266ae0eb70.png)
|
17
21
|
|
18
22
|
### 発生している問題・エラーメッセージ
|
19
23
|
|
20
24
|
```
|
21
|
-
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
|
25
|
+
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''$'' at line 6
|
22
26
|
```
|
23
27
|
|
24
28
|
### 該当のソースコード
|
25
29
|
|
26
30
|
```mysql
|
27
31
|
select
|
28
|
-
si.id as sitter_id,
|
29
|
-
|
32
|
+
user.id as user_id,
|
30
|
-
|
33
|
+
item.name as item_name
|
31
34
|
from
|
32
|
-
s
|
35
|
+
user
|
33
|
-
LEFT JOIN
|
36
|
+
LEFT JOIN item on JSON_UNQUOTE(JSON_EXTRACT(user.item_id, '$')) = item.id '$';
|
37
|
+
-- ↓非jsonの場合のjoin
|
38
|
+
-- left join item on user.item_id = item.id,
|
34
39
|
```
|
35
40
|
|
36
41
|
### 試したこと
|