質問編集履歴

3

# 2020/11/07 03:33 追記

2020/11/06 18:33

投稿

ikatako
ikatako

スコア270

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_matters
101
+ INSERT INTO p_threads
54
-
102
+
55
- (`ID`, `user_ID`, `kind`, `sentence`, `created_at`)
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
- (7, 1, 2, '犬はやわらかいです', '2020-01-07 12:00:00.123456'),
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_threads (
115
+ CREATE TABLE p_comments (
88
116
 
89
117
  `matter_ID` int
90
118
 
91
- ,`title` varchar(100)
119
+ ,`thread_ID` int
92
120
 
93
121
  ,PRIMARY KEY (`matter_ID`)
94
122
 
95
- ,CONSTRAINT fk_p_threads_1 FOREIGN KEY (`matter_ID`) REFERENCES p_matters(`ID`) # 2020/11/06 23:18 追記
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_threads
129
+ INSERT INTO p_comments
100
-
130
+
101
- (`matter_ID`, `title`)
131
+ (`matter_ID`, `thread_ID`)
102
132
 
103
133
  VALUES
104
134
 
105
- (1, '猫スレ'), (2, '犬スレ'), (5, '鰐スレ')
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 追記

2020/11/06 18:33

投稿

ikatako
ikatako

スコア270

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

文の構成を変更

2020/11/06 14:18

投稿

ikatako
ikatako

スコア270

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
- そのためのSQL文があるのですが冗長に思い改善バイスをて質問させてただきました
23
+ 「コメントIDからそのコメントが投稿されスレッドIDを得てスレッIDで対象レッドる」とう変更です
12
-
13
- よろしくお願い致します。
14
24
 
15
25
 
16
26
 
@@ -126,21 +136,13 @@
126
136
 
127
137
 
128
138
 
129
- ###取得SQL文
139
+ ###該当ソースコード
130
-
131
- 取得のために与えらるパターンは次の2つあります。
140
+
132
-
133
- ①スレッドのIDが与えられるパターン
141
+ 現状の「①スレッドのIDが与えられるパターン」がこちらです。
134
-
135
- ②コメントのIDが与えられるパターン
142
+
136
-
137
-
138
-
139
- このうち①は以下のSQL文でできて、これはまぁいいのかなと思っています。
143
+
140
-
141
-
142
-
144
+
143
- 下記を実行 → [http://sqlfiddle.com/#!9/ec5910/2](http://sqlfiddle.com/#!9/ec5910/2)
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
- 冗長に感じるのが次の②のパターンのSQL文
209
+ 上記を「②コメントID与えられるパターンコードに変更したいわけ次のように試しました
206
210
 
207
211
 
208
212
 
@@ -210,11 +214,15 @@
210
214
 
211
215
 
212
216
 
217
+ 一応できはしたのですが…
218
+
219
+
220
+
213
- うして増やしますと`# ここでスレッド ID=1 を取得`という`SELECT`が2か所になってしまい、この重複に冗長さを覚えました
221
+ `SELECT`をこうして増やしますと`# ここでスレッド ID=1 を取得`という`SELECT`が2か所になってしまい、この重複に冗長さを覚えてい
214
-
215
-
216
-
222
+
223
+
224
+
217
- 下記を実行 → [http://sqlfiddle.com/#!9/ec5910/4](http://sqlfiddle.com/#!9/ec5910/4)
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
- 改めまして、上記パターン取得際しまして、より良いSQL文ご指導を賜りまようお願上げます
309
+ 改めまして、上記「②コメントのIDが与えられるパターンコードつきまして、この冗長さ回避るとしたらどんな書き方が良ょうか
310
+
311
+
312
+
313
+ アドバイスよろしくお願い致します。