質問編集履歴

11

目的の結果を追加しました

2020/02/14 02:30

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -62,9 +62,37 @@
62
62
 
63
63
 
64
64
 
65
+ ###目的の結果
65
66
 
67
+ こちらが目的の結果です。図の赤枠で`null`となっている部分は次のように埋めたいです。
66
68
 
69
+ このように埋まるロジックは次に記します。
67
70
 
71
+ ```SQL
72
+
73
+ CREATE TABLE result
74
+
75
+ (`content_id` int, `author_id` int, `content_date` text, `parent_thread_id` int, `parent_content_id` int, `content_type` text, `content_text` text, `attach_id` int, `attach_type` text, `attach_country_code` text, `attached_id` varchar(6), `attached_type` varchar(6), `attached_country_code` varchar(6), `attached_nick_name` varchar(6), `attached_content_text` varchar(13), `attached_follow_date` varchar(6), `attached_favorite_date` varchar(19))
76
+
77
+ ;
78
+
79
+ INSERT INTO result
80
+
81
+ (`content_id`, `author_id`, `content_date`, `parent_thread_id`, `parent_content_id`, `content_type`, `content_text`, `attach_id`, `attach_type`, `attach_country_code`, `attached_id`, `attached_type`, `attached_country_code`, `attached_nick_name`, `attached_content_text`, `attached_follow_date`, `attached_favorite_date`)
82
+
83
+ VALUES
84
+
85
+ (11, 2, '2020-11-11 11:00:00', 8, 0, 'comment', '米国の映画スレを添付します', 9, 'thread', 'jp', 9, 'thread', 'jp', null, '米国の映画について語るスレ', null, null),
86
+
87
+ (7, 1, '2020-07-07 07:00:00', 10, 0, 'comment', '日本の田中三郎さんを添付します。', 3, 'user', 'jp', 3, 'user', 'jp', '田中三郎', null, null, '2020-03-03 03:00:00'),
88
+
89
+ (3, 4, '2020-03-03 03:00:00', 8, 0, 'comment', '韓国の지안さんを添付します。', 3, 'user', 'ko', 3, 'user', 'ko', null, '지안', null, null),
90
+
91
+ (1, 3, '2020-01-01 01:00:00', 9, 0, 'comment', '米国のお勧め映画は何ですか?', 0, null, null, null, null, null, null, null, null, null)
92
+
93
+ ;
94
+
95
+ ```
68
96
 
69
97
 
70
98
 
@@ -80,7 +108,7 @@
80
108
 
81
109
  『jp以外』なら「xx_contents_table」のテーブルにある
82
110
 
83
- というロジックになっています。
111
+ という構造になっています。
84
112
 
85
113
 
86
114
 
@@ -100,11 +128,19 @@
100
128
 
101
129
 
102
130
 
131
+ そのため取得のロジックは、
103
132
 
104
133
 
105
134
 
135
+ 【content_id=11】は「jp_contents_table」から「content_id=9」を添付データとして扱いますので、目的の結果では「attached_content_text」のカラムに`米国の映画について語るスレ`が入っています。
106
136
 
137
+
138
+
107
- 【content_id=7】が『jpuser』であり、その添付データは上図の青枠のように入っていますcontent_id=11,3】は赤枠ように`null`となってうのです。
139
+ 【content_id=7】は「jp_users_table」から「user_id=3」を添付データとしいますので目的の結果では「attached_nick_name」カラムに`田中三郎`が入ってます。
140
+
141
+
142
+
143
+ 【content_id=3】は「xx_contents_table」から「content_id=3」を添付データとして扱いますので、目的の結果では「attached_content_text」のカラムに`지안`が入っています。
108
144
 
109
145
 
110
146
 

10

誤字を訂正

2020/02/14 02:30

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- しかし添付データの取得先を分岐させるにあ、問題が生じています。
13
+ しかし添付データの取得先を分岐させるにあたって、問題が生じています。
14
14
 
15
15
 
16
16
 

9

誤字の訂正

2020/02/14 02:09

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
-
13
+ しかし添付データの取得先を分岐させるにあり、問題が生じています。
14
14
 
15
15
 
16
16
 
@@ -78,7 +78,7 @@
78
78
 
79
79
  『jpだけどuser以外』なら「jp_contents_table」のテーブルにあり、
80
80
 
81
- それ以外』なら「xx_contents_table」のテーブルにある
81
+ jp以外』なら「xx_contents_table」のテーブルにある
82
82
 
83
83
  というロジックになっています。
84
84
 
@@ -96,7 +96,7 @@
96
96
 
97
97
  |【content_id=7】|`3`|『jpのuser』|jp_users_table|
98
98
 
99
- |【content_id=3】|`3`|『それ以外』|xx_contents_table|
99
+ |【content_id=3】|`3`|『jp以外』|xx_contents_table|
100
100
 
101
101
 
102
102
 

8

誤字を訂正

2020/02/14 01:59

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  『jpのuser』ならば「jp_users_table」のテーブルにあり、
78
78
 
79
- 『jpだけどuser以外』なら「jp_contents」のテーブルにあり、
79
+ 『jpだけどuser以外』なら「jp_contents_table」のテーブルにあり、
80
80
 
81
81
  『それ以外』なら「xx_contents_table」のテーブルにある
82
82
 
@@ -88,11 +88,11 @@
88
88
 
89
89
 
90
90
 
91
- |レコード|「attach_id」|jpのuserか|添付データの場所|
91
+ |レコード|「attach_id」|分類|添付データの取得先|
92
92
 
93
93
  |:--:|:--:|:--:|:--:|
94
94
 
95
- |【content_id=11】|`9`|『jpだけどuser以外』|jp_contents|
95
+ |【content_id=11】|`9`|『jpだけどuser以外』|jp_contents_table|
96
96
 
97
97
  |【content_id=7】|`3`|『jpのuser』|jp_users_table|
98
98
 

7

訂正しました

2020/02/14 01:57

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -27,6 +27,8 @@
27
27
  このうち「attach_id」のカラムの値が0でないのは【content_id=11,7,3】で、
28
28
 
29
29
  この3つが添付データを持つということです。
30
+
31
+
30
32
 
31
33
  なのでこの3つには「attached_xxx」のカラムに値を入れたいと思っています。
32
34
 
@@ -70,9 +72,19 @@
70
72
 
71
73
 
72
74
 
75
+ 添付データの取得先は、
76
+
73
- 添付データの取得先は、『jpのuser』ならば「jp_users_table」のテーブルにあり、それ以外なら「xx_contents_table」のテーブルにあるというロジックになっています。
77
+ 『jpのuser』ならば「jp_users_table」のテーブルにあり、
78
+
79
+ 『jpだけどuser以外』なら「jp_contents」のテーブルにあり、
80
+
81
+ 『それ以外』なら「xx_contents_table」のテーブルにある
82
+
83
+ というロジックになっています。
74
84
 
75
85
 
86
+
87
+ (『jpのuser』とは、『attach_country_code='jp' かつ attach_type='user'』ということです。)
76
88
 
77
89
 
78
90
 
@@ -80,19 +92,19 @@
80
92
 
81
93
  |:--:|:--:|:--:|:--:|
82
94
 
83
- |【content_id=11】|`9`|jpuser以外|xx_contents_table|
95
+ |【content_id=11】|`9`|jpだけどuser以外|jp_contents|
84
96
 
85
- |【content_id=7】|`3`|jpのuser|jp_users_table|
97
+ |【content_id=7】|`3`|jpのuser|jp_users_table|
86
98
 
87
- |【content_id=3】|`3`|jpのuser以外|xx_contents_table|
99
+ |【content_id=3】|`3`|『それ以外|xx_contents_table|
88
100
 
89
101
 
90
102
 
91
- 『jpのuser』とは、『attach_country_code='jp' かつ attach_type='user'』ということです。
92
103
 
93
104
 
94
105
 
106
+
95
- 【content_id=7】だけが『jpのuser』であり、その添付データは上図の青枠のように入っていますが、【content_id=11,3】は赤枠のように`null`となってしまうのです。
107
+ 【content_id=7】が『jpのuser』であり、その添付データは上図の青枠のように入っていますが、【content_id=11,3】は赤枠のように`null`となってしまうのです。
96
108
 
97
109
 
98
110
 

6

質問に不要な部分を削除してわかりやすくしました

2020/02/14 01:55

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -1,18 +1,12 @@
1
- ###実現したいこと
1
+ ###前提・実現したいこと
2
2
 
3
- 後述する前提のテーブル対象として
3
+ 「jp_contents_table」から「comment」取得しています。
4
4
 
5
5
 
6
6
 
7
- > ➀jp_actions_table」から、user_id=1(彼)フォロー情報を取得して
7
+ この「attach_idカラムの値が0でないとき
8
8
 
9
- ➁フォロー情報に基づき、「jp_contents_table」からタイムラインに流すコンテンツを取得して、
10
-
11
- ➂そのコンテンツに「attach_idがあれば、添付データして連結す
9
+ トへの添付データとして「attached_xxx」というカラムを連結したいです。
12
-
13
-
14
-
15
- ということをしたいです。
16
10
 
17
11
 
18
12
 
@@ -22,49 +16,35 @@
22
16
 
23
17
  ###発生している問題
24
18
 
25
- 添付データが一部`null`となってしまうのが問題です。
19
+ 図でご説明します。
26
20
 
27
21
 
28
22
 
29
- 下図は後述する問題のソースコードによる取得結果です。
30
-
31
- ![イメージ説明](8d43509ea72a6fc9a1a1445c71077cb4.png)
23
+ まず「comment」である【content_id=11,7,3,1】が取得されています。
32
24
 
33
25
 
34
26
 
35
- ご覧
27
+ のうち「attach_id」のカラムの値が0でないのは【content_id=11,7,3】で、
36
28
 
37
- > ➀「jp_actions_table」から、user_id=1(彼)フォロ情報取得して、
29
+ 3つが添付デ持つということです。
38
30
 
39
- ➁フォロー情報基づき、jp_contents_table」からタイライン流すコンテンツ取得し
31
+ なのでこの3つattached_xxxのカラムに入れたいと思っいます。
40
32
 
41
33
 
42
34
 
43
- の2つはできいて、彼のタイムラインに流したい5つのレコード【content_id=11,7,6,2,1】が並んでいます。
35
+ そして【content_id=7】は「attached_xxx」のカラムに値入ってて問題ありせんが、(図の青枠)
44
36
 
45
37
 
46
38
 
47
- 問題は
48
-
49
- > ➂そのコンテンツに「attach_id」があれば、添付データとして連結
39
+ なぜか【content_id=11,3】は「attached_xxxのカラムの値nullなってまいます。(図の赤枠)
50
40
 
51
41
 
52
42
 
53
- が図のとおり一部だけ`null`となることでして、
43
+ ![イメージ説明](3eca6a5b79889553e914cccd1a18bb8b.png)
54
44
 
55
45
 
56
46
 
57
- 取得された【content_id=7】のレコードを見ると
58
47
 
59
- 「attach_id」のカラムに「3」とあり
60
-
61
- その添付データは右に連結できています。(図の青枠)
62
-
63
- しかし【content_id=11,2】のレコードを見ると
64
-
65
- 「attach_id」のカラムに値があるのに
66
-
67
- その添付データが`null`で連結されてしまうのです。(図の赤枠)
68
48
 
69
49
 
70
50
 
@@ -72,13 +52,13 @@
72
52
 
73
53
  ###問題のソースコード
74
54
 
75
- これが`CREATE`と`INSERT`と、発生している問題を起こすソースコードになります。
76
55
 
77
56
 
57
+ [発生している問題を起こすソースコード](http://sqlfiddle.com/#!9/f02966/3)はこちらです。
78
58
 
79
- [SQL fiddleで実行する](http://sqlfiddle.com/#!9/3d40de/8)
59
+ (文字数制限の都合上、リンクだけとさせて頂きました。)
80
60
 
81
- (質問の文字制限の都合上、リンクだけとさせて頂きました。)
61
+
82
62
 
83
63
 
84
64
 
@@ -88,101 +68,41 @@
88
68
 
89
69
  ###取得のロジック
90
70
 
71
+
72
+
91
- 取得のロジックはこうです。
73
+ 添付データの取得先は、『jpuser』ならば「jp_users_table」のテーブルにあり、それ以外なら「xx_contents_table」のテーブルにあるというロジックになっています。
92
74
 
93
75
 
94
76
 
95
- まず
96
77
 
97
- > ➀「jp_actions_table」から、user_id=1(彼)のフォロー情報を取得して、
98
78
 
79
+ |レコード|「attach_id」|jpのuserか|添付データの場所|
80
+
81
+ |:--:|:--:|:--:|:--:|
82
+
99
- ➁フォロー情報に基づき、「jp_contents_table」からタイムラインに流すコンテンツを取得して、
83
+ |【content_id=11】|`9`|jpのuser以外|xx_contents_table|
84
+
85
+ |【content_id=7】|`3`|jpのuser|jp_users_table|
86
+
87
+ |【content_id=3】|`3`|jpのuser以外|xx_contents_table|
100
88
 
101
89
 
102
90
 
103
- ついてご説明します。
91
+ 『jpのuser』とは、『attach_country_code='jp' か attach_type='user'』とうことです。
104
92
 
105
93
 
106
94
 
107
- これ問題なく上図でも5つレコード【content_id=11,7,6,2,1が取得できます。
108
-
109
-
110
-
111
- この5つが取得されるロジックは
112
-
113
- ・【content_id=11,6】は彼がfollowしているユーザー(2)の投稿だから。
114
-
115
- ・【content_id=7】は彼がfollowしているタグ(2)を持っているから。
116
-
117
- ・【content_id=2,1】は彼がfollowしているスレッド(9)への投稿だから。
118
-
119
- ということになります。
120
-
121
-
122
-
123
- 尚、彼のfollow情報は「jp_contents_table」のテーブルにあり、「action_id=1,2,11」がそれです。
124
-
125
- 例えばテーブルの「action_id=1」のレコードを見ると、彼が「user_id=2」をfollowしていることがわかります。
126
-
127
-
128
-
129
- 次に
130
-
131
- > ➂そのコンテンツに「attach_id」があれば、添付データとして連結する。
132
-
133
-
134
-
135
- についてご説明します。
136
-
137
-
138
-
139
- これが部分的にできません。
140
-
141
-
142
-
143
- 添付データは「attach_country_code='jp'」かつ「attach_type='user'」ならば、「jp_users_table」のテーブルにあります。
144
-
145
- そしてそれ以外なら「xx_contents_table」テーブルにあるという設計になっています。
146
-
147
-
148
-
149
- つまりjpのuserなら「jp_users_table」から添付し、jpのuser以外なら「xx_contents_table」から添付です。
150
-
151
-
152
-
153
- ゆえに【content_id=7】のレコードは、「attach_id」のカラムに`3`とありますが、これはjpのuserなので「jp_users_table」の「user_id=3」を添付データとして扱っており、「attached_nick_name」のカラムにはその添付データの「nick_name」である`田中三郎`が入っています。問題ありません。
154
-
155
-
156
-
157
- そして【content_id=11】のレコードは、「attach_id」のカラムに`9`とありますが、これはjpのuser以外なので「xx_contents_table」の「content_id=9」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である`米国の映画について語るスレ`が入ってほしいのですが、nullとなってしまう。という問題です。
158
-
159
-
160
-
161
- 同じく【content_id=2】のレコードは、「attach_id」のカラムに`4`とありますが、これはpのuser以外なので「xx_contents_table」の「content_id=4」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である`Mr.ROBOT`が入ってほしいのですが、nullとなってしまう。という問題です。
162
-
163
-
164
-
165
- ###まとめ
166
-
167
- 長くなってしまい申し訳ございません。質問をまとめます。
168
-
169
-
170
-
171
- 【content_id=7】のレコードは添付データとして`田中三郎`が入っているのに、【content_id=11,2】のレコードはなぜ`null`となってしまうのか、原因と解決策を知りたいです。
172
-
173
-
174
-
175
- 宜しくお願い致します。
95
+ 【content_id=7】だけが『jpのuser』であり、その添付データは上図の青枠のように入っていますが、【content_id=11,3は赤枠のように`null`となっうのです。
176
96
 
177
97
 
178
98
 
179
99
  ###試したこと
180
100
 
181
- まず「attached_id」のカラムを定義している、[上記SQL fiddle](http://sqlfiddle.com/#!9/3d40de/8)の32~37行目の`as attached_id`に注目しました。
101
+ まず「attached_id」のカラムを定義している、上記SQL fiddleの32~37行目の`as attached_id`に注目しました。
182
102
 
183
103
 
184
104
 
185
- これが取得できていないから、【content_id=11,2】のレコードの「attached_id」のカラムが`null`となっているのだと思います。
105
+ これが取得できていないから、【content_id=11,3】のレコードの「attached_id」のカラムが`null`となっているのだと思います。
186
106
 
187
107
 
188
108
 
@@ -192,7 +112,7 @@
192
112
 
193
113
 
194
114
 
195
- しかし【content_id=11,2】のレコードの「attached_id」のカラムは`null`のままなのです。
115
+ しかし【content_id=11,3】のレコードの「attached_id」のカラムは`null`のままなのです。
196
116
 
197
117
 
198
118
 

5

誤字の訂正

2020/02/14 01:25

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
 
6
6
 
7
- > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
7
+ > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
8
-
8
+
9
- ➁フォロー情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
9
+ ➁フォロー情報に基づき、jp_contents_tableからタイムラインに流すコンテンツを取得して、
10
-
10
+
11
- ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
11
+ ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
12
12
 
13
13
 
14
14
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  ###発生している問題
24
24
 
25
- 添付データが一部nullとなってしまうのが問題です。
25
+ 添付データが一部`null`となってしまうのが問題です。
26
26
 
27
27
 
28
28
 
@@ -34,9 +34,9 @@
34
34
 
35
35
  ご覧のように
36
36
 
37
- > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
37
+ > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
38
-
38
+
39
- ➁フォロー情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
39
+ ➁フォロー情報に基づき、jp_contents_tableからタイムラインに流すコンテンツを取得して、
40
40
 
41
41
 
42
42
 
@@ -46,11 +46,11 @@
46
46
 
47
47
  問題は
48
48
 
49
- > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
49
+ > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
50
-
51
-
52
-
50
+
51
+
52
+
53
- が一部nllとなることでして、
53
+ 図のとおり一部だけ`null`となることでして、
54
54
 
55
55
 
56
56
 
@@ -64,7 +64,7 @@
64
64
 
65
65
  「attach_id」のカラムに値があるのに
66
66
 
67
- その添付データがnullで連結されてしまうのです。(図の赤枠)
67
+ その添付データが`null`で連結されてしまうのです。(図の赤枠)
68
68
 
69
69
 
70
70
 
@@ -94,9 +94,9 @@
94
94
 
95
95
  まず
96
96
 
97
- > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
97
+ > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
98
-
98
+
99
- ➁フォロー情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
99
+ ➁フォロー情報に基づき、jp_contents_tableからタイムラインに流すコンテンツを取得して、
100
100
 
101
101
 
102
102
 
@@ -104,11 +104,11 @@
104
104
 
105
105
 
106
106
 
107
- これは上述した問題のソースコードでもできている部分です。
107
+ これは問題なく上図でも5つコード【content_id=11,7,6,2,1】が取得できていす。
108
-
109
-
110
-
108
+
109
+
110
+
111
- この5つが取得される理由
111
+ この5つが取得されるロジック
112
112
 
113
113
  ・【content_id=11,6】は彼がfollowしているユーザー(2)の投稿だから。
114
114
 
@@ -120,15 +120,15 @@
120
120
 
121
121
 
122
122
 
123
- 尚、彼のfollow情報は「jp_actions_table」にあり、「action_id=1,2,11」がそれです。
123
+ 尚、彼のfollow情報は「jp_contents_table」のテーブルにあり、「action_id=1,2,11」がそれです。
124
-
124
+
125
- 例えば「action_id=1」のレコードを見ると、彼が「user_id=2」をfollowしていることがわかります。
125
+ 例えばテーブルの「action_id=1」のレコードを見ると、彼が「user_id=2」をfollowしていることがわかります。
126
126
 
127
127
 
128
128
 
129
129
  次に
130
130
 
131
- > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
131
+ > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
132
132
 
133
133
 
134
134
 
@@ -150,15 +150,15 @@
150
150
 
151
151
 
152
152
 
153
- ゆえに【content_id=7】のレコードは、「attach_id」のカラムに3とありますが、これはjpのuserなので「jp_users_table」の「user_id=3」を添付データとして扱っており、「attached_nick_name」のカラムにはその添付データの「nick_name」である田中三郎が入っています。問題ありません。
154
-
155
-
156
-
157
- そして【content_id=11】のレコードは、「attach_id」のカラムに9とありますが、これはjpのuser以外なので「xx_contents_table」の「content_id=9」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である米国の映画について語るスレが入ってほしいのですが、nullとなってしまう。という問題です。
158
-
159
-
160
-
161
- 同じく【content_id=2】のレコードは、「attach_id」のカラムに4とありますが、これはpのuser以外なので「xx_contents_table」の「content_id=4」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」であるMr.ROBOTが入ってほしいのですが、nullとなってしまう。という問題です。
153
+ ゆえに【content_id=7】のレコードは、「attach_id」のカラムに`3`とありますが、これはjpのuserなので「jp_users_table」の「user_id=3」を添付データとして扱っており、「attached_nick_name」のカラムにはその添付データの「nick_name」である`田中三郎`が入っています。問題ありません。
154
+
155
+
156
+
157
+ そして【content_id=11】のレコードは、「attach_id」のカラムに`9`とありますが、これはjpのuser以外なので「xx_contents_table」の「content_id=9」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である`米国の映画について語るスレ`が入ってほしいのですが、nullとなってしまう。という問題です。
158
+
159
+
160
+
161
+ 同じく【content_id=2】のレコードは、「attach_id」のカラムに`4`とありますが、これはpのuser以外なので「xx_contents_table」の「content_id=4」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である`Mr.ROBOT`が入ってほしいのですが、nullとなってしまう。という問題です。
162
162
 
163
163
 
164
164
 
@@ -168,7 +168,7 @@
168
168
 
169
169
 
170
170
 
171
- 【content_id=7】のレコードは添付データとして田中三郎が入っているのに、【content_id=11,2】のレコードはなぜnullとなってしまうのか、原因と解決策を知りたいです。
171
+ 【content_id=7】のレコードは添付データとして`田中三郎`が入っているのに、【content_id=11,2】のレコードはなぜ`null`となってしまうのか、原因と解決策を知りたいです。
172
172
 
173
173
 
174
174
 
@@ -178,11 +178,11 @@
178
178
 
179
179
  ###試したこと
180
180
 
181
- まずattached_content_idのカラムを定義している、[上記SQL fiddle](http://sqlfiddle.com/#!9/3d40de/8)の32~37行目の`as attached_id`に注目しました。
181
+ まずattached_idのカラムを定義している、[上記SQL fiddle](http://sqlfiddle.com/#!9/3d40de/8)の32~37行目の`as attached_id`に注目しました。
182
-
183
-
184
-
182
+
183
+
184
+
185
- これが取得できていないから、【content_id=11,2】のレコードのattached_idのカラムがnullとなっているのだと思います。
185
+ これが取得できていないから、【content_id=11,2】のレコードのattached_idのカラムが`null`となっているのだと思います。
186
186
 
187
187
 
188
188
 
@@ -192,17 +192,11 @@
192
192
 
193
193
 
194
194
 
195
- しかし【content_id=11,2】のレコードのattached_idのカラムはnullのままなのです。
195
+ しかし【content_id=11,2】のレコードのattached_idのカラムは`null`のままなのです。
196
-
197
-
198
-
196
+
197
+
198
+
199
- attached_idというカラムを定義している部分はここしかないので、テスト値が入ると思ったのですが、なぜnullのままなのでしょうか。ここを変更してもダメとなると、何を変更したらいいのかわからなくなってしまいました。
199
+ attached_idというカラムを定義している部分はここしかないので、`null`でなく`テスト値`が入ると思ったのですが、なぜ`null`のままなのでしょうか。ここを変更してもダメとなると、何を変更したらいいのかわからなくなってしまいました。
200
-
201
-
202
-
203
- どこで間違ってしまったのか、他に確認すべき方法がわからず質問させて頂きました。
204
-
205
-
206
200
 
207
201
 
208
202
 

4

取得のロジックを追加しました

2020/02/13 20:46

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -1,438 +1,202 @@
1
- ###追記
2
-
3
- 以下の質問はロジックが破綻しているものを例示しておりました。訂正が終わり次第この追記を削除致します。
4
-
5
-
6
-
7
- ご覧になった方はどうぞご放念くださいますようお願いいたします。
8
-
9
-
10
-
11
- ご迷惑をおかけし誠に申し訳ございません。
12
-
13
-
14
-
15
1
  ###実現したいこと
16
2
 
17
-
3
+ 後述する前提のテーブルを対象として
4
+
5
+
6
+
18
-
7
+ > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
8
+
19
- SQLでテブル(`jp_contents_table`)からト(`comment`)を取得したいです。
9
+ ➁フォロ情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
20
-
21
-
22
-
23
- それは`user_id=1`さんが
10
+
24
-
25
- ・フォローしているスレッドへの`comment`
26
-
27
- ・フォローしているタグを持つ`comment`
28
-
29
- ・フォローして人が投稿した`comment`
11
+ ➂そのコンテンツにattach_idがあれば、添付デタとして連結す
30
-
12
+
13
+
14
+
31
- であることが条件となってす。
15
+ ということをしたす。
16
+
17
+
18
+
19
+
32
20
 
33
21
 
34
22
 
35
23
  ###発生している問題
36
24
 
37
- `comment`には添付データがあり`LEFT OUTER JOIN`しているのですが、その添付データが`null`となってしまう問題が解決きない状況です。
38
-
39
-
40
-
41
- 具体的にのコードですと、最終的な結果の1行目の`content_id=11`には`attach_id=9`が添付されているはずなのに、`attached_content_id`などの添付データが全て`null`となってしまいます。
42
-
43
-
44
-
45
- ![イメージ説明](d5a160f54367c033cde871283c7b4986.png)
46
-
47
-
48
-
49
- ###該当スコード
50
-
51
-
52
-
53
-
54
-
55
- [下記のコードを実行する](http://sqlfiddle.com/#!9/ee0d1a/5)
56
-
57
- ↑こちらのリンクで上図が表示されます。
58
-
59
- まれにSQL fiddle側のバグで実行エラーとなりますが時間がたてば大丈夫です。
60
-
61
-
62
-
63
- ```SQL
64
-
65
- /*
66
-
67
- 【テーブル構造】
68
-
69
- 掲示板サイトブルで、以下4つがあります。
70
-
71
- ・jp_actions : アクションテーブル
72
-
73
- ・xx_contents_table : jp以外コンテンツテーブル
74
-
75
- ・jp_contents : jpのコンテンツのテブル
76
-
77
- ・jp_users : ユーザーテーブル
78
-
79
- */
80
-
81
-
82
-
83
- # jp_actions
84
-
85
- # アクションブル
86
-
87
- CREATE TABLE jp_actions_table
88
-
89
- (action_id int, action_name text, action_date text, actor_id int, target_id int, target_type text, target_country_code text)
90
-
91
- ;
92
-
93
- INSERT INTO jp_actions_table
94
-
95
- (action_id, action_name, action_date, actor_id, target_id, target_type, target_country_code)
96
-
97
- VALUES
98
-
99
- (1, 'follow', '2020-01-01 01:00:00', 1, 2, 'user', 'jp'),
100
-
101
- (2, 'follow', '2020-02-02 02:00:00', 1, 2, 'tag', ''),
102
-
103
- (3, 'favorite', '2020-03-03 03:00:00', 1, 3, 'user', 'jp'),
104
-
105
- (4, 'favorite', '2020-04-04 04:00:00', 2, 5, 'user', 'jp'),
106
-
107
- (5, 'favorite', '2020-05-05 05:00:00', 1, 7, 'user', 'jp'),
108
-
109
- (6, 'block', '2020-08-08 08:00:00', 1, 5, 'user', 'jp'),
110
-
111
- (7, 'favorite', '2020-07-07 07:00:00', 1, 5, 'user', 'jp'),
112
-
113
- (8, 'favorite', '2020-08-08 08:00:00', 1, 5, 'movie', 'en'),
114
-
115
- (9, 'favorite', '2020-09-09 09:00:00', 1, 3, 'user', 'en'),
116
-
117
- (10, 'favorite', '2020-10-10 10:00:00', 1, 3, 'thread','jp'),
118
-
119
- (11, 'follow', '2020-11-11 11:00:00', 1, 3, 'thread','jp')
120
-
121
- ;
122
-
123
-
124
-
125
- # xx_contents_table
126
-
127
- # jp以外のコンテンツのテーブル
128
-
129
- CREATE TABLE xx_contents_table
130
-
131
- (content_id int, content_date text, content_type text, country_code text, content_text text, tag_ids text, timelines text)
132
-
133
- ;
134
-
135
- INSERT INTO xx_contents_table
136
-
137
- (content_id, content_date, content_type, country_code, content_text, tag_ids, timelines)
138
-
139
- VALUES
140
-
141
- (1, '2020-01-01 01:00:00', 'user', 'en', 'smith', '"[5,82]"', '"["tag_5","tag_82"]"'),
142
-
143
- (2, '2020-02-02 02:00:00', 'manga', 'zh', '砂輿海之歌', '"[50,75]"', '"["tag_50","tag_75"]"'),
144
-
145
- (3, '2020-03-03 03:00:00', 'user', 'ko', '지안', '"[91,20]"', '"["tag_91","tag_20"]"'),
146
-
147
- (4, '2020-04-04 04:00:00', 'drama', 'en', 'Mr.ROBOT', '"[5,6]"', '"["tag_5","tag_6"]"'),
148
-
149
- (5, '2020-05-05 05:00:00', 'movie', 'en', 'Avator', '"[13,27]"', '"["tag_13","tag_27"]"'),
150
-
151
- (6, '2020-06-06 06:00:00', 'movie', 'ru', 'Хардкор', '"[66,20]"', '"["thread_66","author_20","tag_65","tag_2"]"'),
152
-
153
- (7, '2020-07-07 07:00:00', 'drama', 'zh', '大秦帝国', '"[5,80]"', '"["tag_5","tag_80"]"')
154
-
155
- ;
156
-
157
-
158
-
159
- # jp_contents
160
-
161
- # jpのコンテンツテーブル
162
-
163
- CREATE TABLE jp_contents_table
164
-
165
- (content_id int, author_id int, content_date text, parent_thread_id int, parent_content_id int, content_type text, content_text text, tag_ids text, timelines text, attach_id int, attach_type text, attach_country_code text)
166
-
167
- ;
168
-
169
- INSERT INTO jp_contents_table
170
-
171
- (content_id, author_id, content_date, parent_thread_id, parent_content_id, content_type, content_text,tag_ids, timelines, attach_id, attach_type, attach_country_code)
172
-
173
- VALUES
174
-
175
- (1, 3, '2020-01-01 01:00:00', 9, 0, 'comment', '米国のお勧め映画は何ですか?', '"[17]"', '"["thread_9","author_3","tag_17"]"', 0, '', ''),
176
-
177
- (2, 1, '2020-02-02 02:00:00', 9, 1, 'reply', '米国のMr.ROBOTを添付しす。', '"[17]"', '"["thread_9","author_1","tag_17"]"', 4, 'drama', 'en'),
178
-
179
- (3, 2, '2020-03-03 03:00:00', 8, 0, 'comment', '韓国の지안さんを添付します。', '"[30]"', '"["thread_8","author_2","tag_30"]"', 3, 'user', 'ko'),
180
-
181
- (4, 1, '2020-04-04 04:00:00', 8, 3, 'reply', '面白そうですね。', '"[30]"', '"["thread_8","author_1","tag_30"]"', 0, '', ''),
182
-
183
- (5, 3, '2020-05-05 05:00:00', 8, 3, 'reply', '良いです', '"[30]"', '"["thread_8","author_3","tag_30"]"', 0, '', ''),
184
-
185
- (6, 3, '2020-06-06 06:00:00', 8, 5, 'reply', 'ええ、とても良いですよ。', '"[30]"', '"["thread_8","author_3","tag_30"]"', 0, '', ''),
186
-
187
- (7, 2, '2020-07-07 07:00:00', 10, 0, 'comment', '日本の田中三郎さんを添付します。', '"[8,25]"', '"["thread_10","author_2","tag_8","tag_25"]"', 3, 'user', 'jp'),
188
-
189
- (8, 3, '2020-08-08 08:00:00', 0, 0, 'thread', '韓国の映画について語るスレ', '"[30]"', '"["thread_8","author_3","tag_30"]"', 0, '', ''),
190
-
191
- (9, 3, '2020-09-09 09:00:00', 0, 0, 'thread', '米国の映画について語るスレ', '"[17]"', '"["thread_9","author_3","tag_17"]"', 0, '', ''),
192
-
193
- (10, 3, '2020-10-10 10:00:00', 0, 0, 'thread', '日本の田中家について語るスレ', '"[8,25]"', '"["thread_10","author_3","tag_8","tag_25"]"', 0, '', ''),
194
-
195
- (11, 2, '2020-11-11 11:00:00', 8, 0, 'comment', '米国の映画スレを添付します', '"[30]"', '"["thread_8","author_2","tag_30"]"', 9, 'thread', 'jp')
196
-
197
- ;
198
-
199
-
200
-
201
- # jp_users
202
-
203
- # ユーザーのテーブル
204
-
205
- CREATE TABLE jp_users_table
206
-
207
- (user_id int, unique_name text, nick_name text)
208
-
209
- ;
210
-
211
- INSERT INTO jp_users_table
212
-
213
- (user_id, unique_name, nick_name)
214
-
215
- VALUES
216
-
217
- (1, 'ichiro', '田中一郎'),
218
-
219
- (2, 'jiro', '田中二郎'),
220
-
221
- (3, 'saburo', '田中三郎'),
222
-
223
- (4, 'shiro', '田中四郎'),
224
-
225
- (5, 'goro', '山田五郎'),
226
-
227
- (6, 'rokuro', '山田六郎'),
228
-
229
- (7, 'nanaro', '山田七郎')
230
-
231
- ;
232
-
233
-
234
-
235
- /*
236
-
237
- 【下記SQLの概要】
238
-
239
- user_id=1のタイムラインに流す情報として
240
-
241
- 彼のfolllow対象をjp_actions_tableから取得し
242
-
243
- それら( user_id=2, tag_id=2, thread_id=3 )を持つものを
244
-
245
- xx_contents_tableから取得します。
246
-
247
-
248
-
249
- 【発生している問題】
250
-
251
- content_id=11(取得結果の1行目)には
252
-
253
- attach_id=9が添付されているはずなのに
254
-
255
- attached_content_idなどの添付デーが
256
-
257
- 全てnullとなってしまいます。
258
-
259
- */
260
-
261
-
262
-
263
- # 最終的な取得
264
-
265
- select *
266
-
267
- from
268
-
269
- (
270
-
271
- select *
272
-
273
- from jp_contents_table
274
-
275
- where timelines regexp 'thread_3|author_2|tag_2' and content_type='comment' or content_type='reply'
276
-
277
- ) as timeline_list
278
-
279
-
280
-
281
- left outer join
282
-
283
- (
284
-
285
- # 添付データの取得
286
-
287
- select
288
-
289
- jp_actions.target_id as attached_content_id
290
-
291
- , jp_actions.target_type as attached_content_type
292
-
293
- , jp_actions.target_country_code as attached_country_code
294
-
295
- , case
296
-
297
- when jp_actions.target_type='user' and jp_actions.target_country_code='jp'
298
-
299
- then jp_users.nick_name
300
-
301
- else null
302
-
303
- end as attached_nick_name
304
-
305
- ,case
306
-
307
- when jp_actions.target_country_code='jp' then
308
-
309
- case when jp_actions.target_type='user' then null
310
-
311
- else jp_contents.content_text end
312
-
313
- else xx_contents.content_text
314
-
315
- end as attached_content_text
316
-
317
- # 添付データへのアクション日時
318
-
319
- , max( case
320
-
321
- when jp_actions.action_name='follow'
322
-
323
- then jp_actions.action_date
324
-
325
- end ) as attached_follow_date
326
-
327
- , max( case
328
-
329
- when jp_actions.action_name='favorite'
330
-
331
- then jp_actions.action_date
332
-
333
- end ) as attached_favorite_date
334
-
335
-
336
-
337
- from jp_actions_table jp_actions
338
-
339
-
340
-
341
- # 添付データのテーブルをjoin
342
-
343
- left join jp_users_table jp_users
344
-
345
- on jp_actions.target_id=jp_users.user_id
346
-
347
- left join jp_contents_table jp_contents
348
-
349
- on jp_actions.target_id=jp_contents.attach_id
350
-
351
- left join xx_contents_table xx_contents
352
-
353
- on jp_actions.target_id=xx_contents.content_id
354
-
355
-
356
-
357
- # 彼がactor_idであるもの
358
-
359
- where jp_actions.actor_id=1
360
-
361
- # favorite_dateとfollow_dateが欲しい
362
-
363
- and jp_actions.action_name in ('favorite', 'follow')
364
-
365
- and exists(
366
-
367
- select 0 from jp_actions_table
368
-
369
- where target_id=jp_actions.target_id and action_name='favorite'
370
-
371
- )
372
-
373
- # 彼とblock関係にあるjpのuserを除外
374
-
375
- and not exists(
376
-
377
- select 0 from jp_actions_table
378
-
379
- where target_type='user' and target_country_code='jp' and action_name='block'
380
-
381
- and target_id=jp_actions.target_id and jp_actions.target_type='user'
382
-
383
- and actor_id=1
384
-
385
- )
386
-
387
-
388
-
389
- group by jp_actions.target_id, jp_actions.target_type, jp_actions.target_country_code
390
-
391
-
392
-
393
- ) as action_list
394
-
395
-
396
-
397
- on timeline_list.attach_id=action_list.attached_content_id
398
-
399
- and timeline_list.attach_type=action_list.attached_content_type
400
-
401
- and timeline_list.attach_country_code=action_list.attached_country_code
402
-
403
-
404
-
405
- order by content_date desc
406
-
407
-
408
-
409
-
410
-
411
- ```
25
+ 添付データが一部nullとなってしまうのが問題です。
26
+
27
+
28
+
29
+ 図は後述する問題ソースコードによる取得結果す。
30
+
31
+ ![イメージ説明](8d43509ea72a6fc9a1a1445c71077cb4.png)
32
+
33
+
34
+
35
+ ご覧のように
36
+
37
+ > ➀jp_actions_tableから、user_id=1(彼)フォロ情報を取得して、
38
+
39
+ ➁フォロー情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
40
+
41
+
42
+
43
+ 2つはできていて、彼のタイムラインに流したい5つのレコード【content_id=11,7,6,2,1】が並んでいます。
44
+
45
+
46
+
47
+ 問題は
48
+
49
+ > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
50
+
51
+
52
+
53
+ が一部nllとなることでして、
54
+
55
+
56
+
57
+ 取得された【content_id=7】レコドを見ると
58
+
59
+ attach_id」カラムに「3」とあり
60
+
61
+ 添付データは右に連結できています。(図青枠)
62
+
63
+ しかし【content_id=11,2】コードを見ると
64
+
65
+ 「attach_id」カラムに値があるのに
66
+
67
+ その添付データがnullで連結されてしまうのです。(図の赤枠)
68
+
69
+
70
+
71
+
72
+
73
+ ###問題スコード
74
+
75
+ これが`CREATE`と`INSERT`と、発生している問題を起こすソースコードになります。
76
+
77
+
78
+
79
+ [SQL fiddleで実行する](http://sqlfiddle.com/#!9/3d40de/8)
80
+
81
+ (質問の文字制限の都合上、リンクだけとさせて頂きました。)
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+ ###取得のロジック
90
+
91
+ 取得のロジックはこうです。
92
+
93
+
94
+
95
+ まず
96
+
97
+ > ➀jp_actions_tableから、user_id=1(彼)のフォロー情報を取得して、
98
+
99
+ ➁フォロー情報に基づき、jp_contents_table からタイムラインに流すコンテンツを取得して、
100
+
101
+
102
+
103
+ についてご説明します。
104
+
105
+
106
+
107
+ これは上述した問題のソースコードでもできている部分です。
108
+
109
+
110
+
111
+ この5つが取得される理由は
112
+
113
+ ・【content_id=11,6】は彼がfollowしているユーザー(2)の投稿だから。
114
+
115
+ ・【content_id=7】は彼がfollowしているタグ(2)を持っているから。
116
+
117
+ ・【content_id=2,1】は彼がfollowしているスレッド(9)への投稿だから。
118
+
119
+ ということになります。
120
+
121
+
122
+
123
+ 尚、彼のfollow情報は「jp_actions_table」にあり、「action_id=1,2,11」がそれです。
124
+
125
+ 例えば「action_id=1」のレコードを見ると、彼が「user_id=2」をfollowしていることがわかります。
126
+
127
+
128
+
129
+ 次に
130
+
131
+ > ➂そのコンテンツにattach_idがあれば、添付データとして連結する。
132
+
133
+
134
+
135
+ についてご説明します。
136
+
137
+
138
+
139
+ これが部分的にできません。
140
+
141
+
142
+
143
+ 添付データは「attach_country_code='jp'」かつ「attach_type='user'」ならば、「jp_users_table」のテーブルにあります。
144
+
145
+ そしてそれ以外なら「xx_contents_table」テーブルにあるという設計になっています。
146
+
147
+
148
+
149
+ つまりjpのuserなら「jp_users_table」から添付し、jpuser以外なら「xx_contents_table」から添付です。
150
+
151
+
152
+
153
+ ゆえに【content_id=7】のレコードは、「attach_id」のカラムに「3」とありますが、これはjpのuserなので「jp_users_table」の「user_id=3」を添付データとして扱っており、「attached_nick_name」のカラムにはその添付データの「nick_name」である「田中三郎」が入っています。問題ありません。
154
+
155
+
156
+
157
+ そして【content_id=11】のレコードは、「attach_id」のカラムに「9」とありますが、これはjpのuser以外なので「xx_contents_table」の「content_id=9」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である「米国の映画について語るスレ」が入ってほしいのですが、nullとなってしまう。という問題です。
158
+
159
+
160
+
161
+ 同じく【content_id=2】のレコードは、「attach_id」のカラムに「4」とありますが、これはpのuser以外なので「xx_contents_table」の「content_id=4」を添付データとして扱っており、「attached_content_text」のカラムにはその添付データの「content_text」である「Mr.ROBOT」が入ってほしいのですが、nullとなってしまう。という問題です。
162
+
163
+
164
+
165
+ ###とめ
166
+
167
+ 長くなってしまい申し訳ございませ。質問をまとめます。
168
+
169
+
170
+
171
+ 【content_id=7】のレコードは添付データとして「田中三郎」が入っているのに、【content_id=11,2】のレコードはなぜnullとなってしまうのか、原因と解決策を知りたいです。
172
+
173
+
174
+
175
+ くお願い致します。
176
+
177
+
412
178
 
413
179
  ###試したこと
414
180
 
415
- まず`attached_content_id`のカラムを定義している、上記SQL fiddleの28行目の
181
+ まずattached_content_idのカラムを定義している、[上記SQL fiddle](http://sqlfiddle.com/#!9/3d40de/8)32~37行目の`as attached_id`に注目しました。
416
-
417
- `jp_actions.target_id as attached_content_id`に注目しました。
182
+
418
-
419
-
420
-
183
+
184
+
421
- なぜかわかりませんがこれが取得できていないから、最終的な結果の`content_id=11``attached_content_id`のカラムが`null`となっているのだと思います。
185
+ これが取得できていないから、content_id=11,2】レコードのattached_idのカラムがnullとなっているのだと思います。
422
-
423
-
424
-
186
+
187
+
188
+
425
- そこで28行目を下記のように変更してみました。
189
+ そこでこの32~37行目を下記のように変更してみました。
426
-
190
+
427
- `'テスト値' as attached_content_id`
191
+ `'テスト値' as attached_id`
428
-
429
-
430
-
192
+
193
+
194
+
431
- しかし`null`のままなのです。
195
+ しかし【content_id=11,2】のレコードのattached_idのカラムはnullのままなのです。
432
-
433
-
434
-
196
+
197
+
198
+
435
- まったく理解できないのですが、他に`attached_content_id`というカラムを定義している部分はないのなぜ上のように変更しても`テスト値`が入らず`null`のままなのでしょうか。
199
+ attached_idというカラムを定義している部分はここしかないの、テスト値が入ると思ったのですが、なぜnullのままなのでしょうか。ここを変更してもダメとなると、何を変更したらいいのかわからなくなってしまいました。
436
200
 
437
201
 
438
202
 
@@ -440,7 +204,7 @@
440
204
 
441
205
 
442
206
 
443
- どうすれば`attached_content_id`など添付データの値を入れることができるか、ご教示頂けましたら幸いです。
207
+
444
208
 
445
209
 
446
210
 

3

誤字を訂正しました

2020/02/13 20:34

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -440,7 +440,7 @@
440
440
 
441
441
 
442
442
 
443
- どうすれば`attached_content_id`など添付データの値を入れることができるか、ご教頂けましたら幸いです。
443
+ どうすれば`attached_content_id`など添付データの値を入れることができるか、ご教頂けましたら幸いです。
444
444
 
445
445
 
446
446
 

2

追記

2020/02/13 02:09

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,17 @@
1
+ ###追記
2
+
3
+ 以下の質問はロジックが破綻しているものを例示しておりました。訂正が終わり次第この追記を削除致します。
4
+
5
+
6
+
7
+ ご覧になった方はどうぞご放念くださいますようお願いいたします。
8
+
9
+
10
+
11
+ ご迷惑をおかけし誠に申し訳ございません。
12
+
13
+
14
+
1
15
  ###実現したいこと
2
16
 
3
17
 

1

SQL fiddleの訂正

2020/02/13 01:20

投稿

ikatako
ikatako

スコア270

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- [下記のコードを実行する](http://sqlfiddle.com/#!9/ee0d1a/3)
41
+ [下記のコードを実行する](http://sqlfiddle.com/#!9/ee0d1a/5)
42
42
 
43
43
  ↑こちらのリンクで上図が表示されます。
44
44