質問編集履歴
3
# 2020/11/07 03:33 追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,92 +48,94 @@
|
|
48
48
|
|
49
49
|
,INDEX idx_p_matters_1 (`kind`)
|
50
50
|
|
51
|
+
,CONSTRAINT fk_p_matters_1 FOREIGN KEY (user_ID) REFERENCES users (ID) # 2020/11/07 03:33 追記
|
52
|
+
|
53
|
+
);
|
54
|
+
|
55
|
+
INSERT INTO p_matters
|
56
|
+
|
57
|
+
(`ID`, `user_ID`, `kind`, `sentence`, `created_at`)
|
58
|
+
|
59
|
+
VALUES
|
60
|
+
|
61
|
+
# thread は kind=1 で comment は kind=2
|
62
|
+
|
63
|
+
(1, 3, 1, '猫について語りましょう', '2020-01-01 12:00:00.123456'),
|
64
|
+
|
65
|
+
(2, 3, 1, '犬について語りましょう', '2020-01-02 12:00:00.123456'),
|
66
|
+
|
67
|
+
(3, 4, 2, '猫はいいです', '2020-01-03 12:00:00.123456'),
|
68
|
+
|
69
|
+
(4, 1, 2, 'たしかに猫は最高です', '2020-01-04 12:00:00.123456'),
|
70
|
+
|
71
|
+
(5, 2, 1, '鰐について語りましょう', '2020-01-05 12:00:00.123456'),
|
72
|
+
|
73
|
+
(6, 3, 2, '鰐は怖いです', '2020-01-06 12:00:00.123456'),
|
74
|
+
|
75
|
+
(7, 1, 2, '犬はやわらかいです', '2020-01-07 12:00:00.123456'),
|
76
|
+
|
77
|
+
(8, 3, 2, '猫は液体です', '2020-01-08 12:00:00.123456'),
|
78
|
+
|
79
|
+
(9, 2, 2, '猫は液体ではないです', '2020-01-09 12:00:00.123456'),
|
80
|
+
|
81
|
+
(10, 4, 2, '鰐は怖くないです', '2020-01-10 12:00:00.123456')
|
82
|
+
|
83
|
+
;
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
-- 投稿 (サブタイプ/スレッド)
|
88
|
+
|
89
|
+
CREATE TABLE p_threads (
|
90
|
+
|
91
|
+
`matter_ID` int
|
92
|
+
|
93
|
+
,`title` varchar(100)
|
94
|
+
|
95
|
+
,PRIMARY KEY (`matter_ID`)
|
96
|
+
|
97
|
+
,CONSTRAINT fk_p_threads_1 FOREIGN KEY (`matter_ID`) REFERENCES p_matters(`ID`) # 2020/11/06 23:18 追記
|
98
|
+
|
51
99
|
);
|
52
100
|
|
53
|
-
INSERT INTO p_
|
101
|
+
INSERT INTO p_threads
|
54
|
-
|
102
|
+
|
55
|
-
(`
|
103
|
+
(`matter_ID`, `title`)
|
56
104
|
|
57
105
|
VALUES
|
58
106
|
|
59
|
-
# thread は kind=1 で comment は kind=2
|
60
|
-
|
61
|
-
(1, 3, 1, '猫について語りましょう', '2020-01-01 12:00:00.123456'),
|
62
|
-
|
63
|
-
(2, 3, 1, '犬について語りましょう', '2020-01-02 12:00:00.123456'),
|
64
|
-
|
65
|
-
(3, 4, 2, '猫はいいです', '2020-01-03 12:00:00.123456'),
|
66
|
-
|
67
|
-
(4, 1, 2, 'たしかに猫は最高です', '2020-01-04 12:00:00.123456'),
|
68
|
-
|
69
|
-
(5, 2, 1, '鰐について語りましょう', '2020-01-05 12:00:00.123456'),
|
70
|
-
|
71
|
-
(6, 3, 2, '鰐は怖いです', '2020-01-06 12:00:00.123456'),
|
72
|
-
|
73
|
-
(
|
107
|
+
(1, '猫スレ'), (2, '犬スレ'), (5, '鰐スレ')
|
74
|
-
|
75
|
-
(8, 3, 2, '猫は液体です', '2020-01-08 12:00:00.123456'),
|
76
|
-
|
77
|
-
(9, 2, 2, '猫は液体ではないです', '2020-01-09 12:00:00.123456'),
|
78
|
-
|
79
|
-
(10, 4, 2, '鰐は怖くないです', '2020-01-10 12:00:00.123456')
|
80
108
|
|
81
109
|
;
|
82
110
|
|
83
111
|
|
84
112
|
|
85
|
-
-- 投稿 (サブタイプ/
|
113
|
+
-- 投稿 (サブタイプ/コメント)
|
86
|
-
|
114
|
+
|
87
|
-
CREATE TABLE p_t
|
115
|
+
CREATE TABLE p_comments (
|
88
116
|
|
89
117
|
`matter_ID` int
|
90
118
|
|
91
|
-
,`t
|
119
|
+
,`thread_ID` int
|
92
120
|
|
93
121
|
,PRIMARY KEY (`matter_ID`)
|
94
122
|
|
95
|
-
,CONSTRAINT fk_p_t
|
123
|
+
,CONSTRAINT fk_p_comments_1 FOREIGN KEY (`matter_ID`) REFERENCES p_matters(`ID`)
|
124
|
+
|
125
|
+
,CONSTRAINT fk_p_comments_2 FOREIGN KEY (`thread_ID`) REFERENCES p_threads(`matter_ID`)
|
96
126
|
|
97
127
|
);
|
98
128
|
|
99
|
-
INSERT INTO p_t
|
129
|
+
INSERT INTO p_comments
|
100
|
-
|
130
|
+
|
101
|
-
(`matter_ID`, `t
|
131
|
+
(`matter_ID`, `thread_ID`)
|
102
132
|
|
103
133
|
VALUES
|
104
134
|
|
105
|
-
(1,
|
135
|
+
(3, 1),(4, 1),(6, 5),(7, 2),(8, 1),(9, 1),(10, 5)
|
106
136
|
|
107
137
|
;
|
108
138
|
|
109
|
-
|
110
|
-
|
111
|
-
-- 投稿 (サブタイプ/コメント)
|
112
|
-
|
113
|
-
CREATE TABLE p_comments (
|
114
|
-
|
115
|
-
`matter_ID` int
|
116
|
-
|
117
|
-
,`thread_ID` int
|
118
|
-
|
119
|
-
,PRIMARY KEY (`matter_ID`)
|
120
|
-
|
121
|
-
,CONSTRAINT fk_p_comments_1 FOREIGN KEY (`matter_ID`) REFERENCES p_matters(`ID`)
|
122
|
-
|
123
|
-
,CONSTRAINT fk_p_comments_2 FOREIGN KEY (`thread_ID`) REFERENCES p_threads(`matter_ID`)
|
124
|
-
|
125
|
-
);
|
126
|
-
|
127
|
-
INSERT INTO p_comments
|
128
|
-
|
129
|
-
(`matter_ID`, `thread_ID`)
|
130
|
-
|
131
|
-
VALUES
|
132
|
-
|
133
|
-
(3, 1),(4, 1),(6, 5),(7, 2),(8, 1),(9, 1),(10, 5)
|
134
|
-
|
135
|
-
;
|
136
|
-
|
137
139
|
```
|
138
140
|
|
139
141
|
|
2
# 2020/11/06 23:18 追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -92,6 +92,8 @@
|
|
92
92
|
|
93
93
|
,PRIMARY KEY (`matter_ID`)
|
94
94
|
|
95
|
+
,CONSTRAINT fk_p_threads_1 FOREIGN KEY (`matter_ID`) REFERENCES p_matters(`ID`) # 2020/11/06 23:18 追記
|
96
|
+
|
95
97
|
);
|
96
98
|
|
97
99
|
INSERT INTO p_threads
|
1
文の構成を変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
###前提
|
1
|
+
###前提
|
2
2
|
|
3
3
|
掲示板を作っていて、**「対象スレッドの投稿者でない者」が投稿したコメントの有無を確認したい**という目的がございます。
|
4
4
|
|
@@ -8,9 +8,19 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
###実現したいこと
|
12
|
+
|
13
|
+
現状は「①スレッドのIDが与えられるパターン」なのですが、
|
14
|
+
|
15
|
+
これを「②コメントのIDが与えられるパターン」のコードに変更したいです。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
つまり
|
20
|
+
|
21
|
+
「スレッドIDで対象スレッドを決める」のではなく、
|
22
|
+
|
11
|
-
そのた
|
23
|
+
「コメントIDからそのコメントが投稿されたスレッドIDを得て、そのスレッドIDで対象スレッドを決める」という変更です。
|
12
|
-
|
13
|
-
よろしくお願い致します。
|
14
24
|
|
15
25
|
|
16
26
|
|
@@ -126,21 +136,13 @@
|
|
126
136
|
|
127
137
|
|
128
138
|
|
129
|
-
###
|
139
|
+
###該当のソースコード
|
130
|
-
|
131
|
-
|
140
|
+
|
132
|
-
|
133
|
-
①スレッドのIDが与えられるパターン
|
141
|
+
現状の「①スレッドのIDが与えられるパターン」がこちらです。
|
134
|
-
|
135
|
-
|
142
|
+
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
143
|
+
|
140
|
-
|
141
|
-
|
142
|
-
|
144
|
+
|
143
|
-
|
145
|
+
実行 → [http://sqlfiddle.com/#!9/ec5910/2](http://sqlfiddle.com/#!9/ec5910/2)
|
144
146
|
|
145
147
|
```SQL
|
146
148
|
|
@@ -202,7 +204,9 @@
|
|
202
204
|
|
203
205
|
```
|
204
206
|
|
207
|
+
###試したこと
|
208
|
+
|
205
|
-
|
209
|
+
上記を「②コメントのIDが与えられるパターン」のコードに変更したいわけで次のように試しました。
|
206
210
|
|
207
211
|
|
208
212
|
|
@@ -210,11 +214,15 @@
|
|
210
214
|
|
211
215
|
|
212
216
|
|
217
|
+
一応できはしたのですが…
|
218
|
+
|
219
|
+
|
220
|
+
|
213
|
-
|
221
|
+
`SELECT`をこうして増やしますと`# ここでスレッド ID=1 を取得`という`SELECT`が2か所になってしまい、この重複に冗長さを覚えています。
|
214
|
-
|
215
|
-
|
216
|
-
|
222
|
+
|
223
|
+
|
224
|
+
|
217
|
-
|
225
|
+
実行 → [http://sqlfiddle.com/#!9/ec5910/4](http://sqlfiddle.com/#!9/ec5910/4)
|
218
226
|
|
219
227
|
```sql
|
220
228
|
|
@@ -298,4 +306,8 @@
|
|
298
306
|
|
299
307
|
```
|
300
308
|
|
301
|
-
改めまして、上記パターン
|
309
|
+
改めまして、上記「②コメントのIDが与えられるパターン」のコードにつきまして、この冗長さを回避するとしたらどんな書き方が良いでしょうか。
|
310
|
+
|
311
|
+
|
312
|
+
|
313
|
+
アドバイスよろしくお願い致します。
|