回答編集履歴

2

誤字を修正

2017/09/05 12:36

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -162,7 +162,7 @@
162
162
 
163
163
 
164
164
 
165
- そのような投稿の「イイネ数」を 0 として取得したい場合は、以下のようにする良いでしょう。
165
+ そのような投稿の「イイネ数」を 0 として取得したい場合は、以下のようにする良いでしょう。
166
166
 
167
167
  ```sql
168
168
 

1

追記

2017/09/05 12:36

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -153,3 +153,97 @@
153
153
  3 rows in set (0.00 sec)
154
154
 
155
155
  ```
156
+
157
+
158
+
159
+ # Update
160
+
161
+ 上記の SQLだと、1つも「イイネ」されていない投稿の「イイネ数」(`cnt`カラム)は`NULL`になります。
162
+
163
+
164
+
165
+ そのような投稿の「イイネ数」を 0 として取得したい場合は、以下のようにするよ良いでしょう。
166
+
167
+ ```sql
168
+
169
+ SELECT
170
+
171
+ news.news_no,
172
+
173
+ news.news_category_no,
174
+
175
+ news.news_title,
176
+
177
+ category.category_no,
178
+
179
+ category.category_name,
180
+
181
+ IFNULL(tmp.cnt, 0) AS cnt
182
+
183
+ FROM news
184
+
185
+ LEFT JOIN category ON news.news_category_no = category.category_no
186
+
187
+ LEFT JOIN (SELECT like_news_no, COUNT(*) AS cnt FROM like_news GROUP BY like_news_no) AS tmp
188
+
189
+ ON news.news_no = tmp. like_news_no
190
+
191
+ ORDER BY news.news_no;
192
+
193
+ ```
194
+
195
+ 実行結果
196
+
197
+ ```
198
+
199
+ mysql> INSERT INTO news VALUES (4, 2, '果物です');
200
+
201
+ Query OK, 1 row affected (0.01 sec)
202
+
203
+
204
+
205
+ mysql> SELECT
206
+
207
+ -> news.news_no,
208
+
209
+ -> news.news_category_no,
210
+
211
+ -> news.news_title,
212
+
213
+ -> category.category_no,
214
+
215
+ -> category.category_name,
216
+
217
+ -> IFNULL(tmp.cnt, 0) AS cnt
218
+
219
+ -> FROM news
220
+
221
+ -> LEFT JOIN category ON news.news_category_no = category.category_no
222
+
223
+ -> LEFT JOIN (SELECT like_news_no, COUNT(*) AS cnt FROM like_news GROUP BY like_news_no) AS tmp
224
+
225
+ -> ON news.news_no = tmp. like_news_no
226
+
227
+ -> ORDER BY news.news_no;
228
+
229
+ +---------+------------------+--------------------+-------------+---------------+-----+
230
+
231
+ | news_no | news_category_no | news_title | category_no | category_name | cnt |
232
+
233
+ +---------+------------------+--------------------+-------------+---------------+-----+
234
+
235
+ | 1 | 1 | 美味しいです | 1 | 野菜 | 2 |
236
+
237
+ | 2 | 2 | 甘いです | 2 | 果物 | 1 |
238
+
239
+ | 3 | 1 | 不味いです | 1 | 野菜 | 1 |
240
+
241
+ | 4 | 2 | 果物です | 2 | 果物 | 0 |
242
+
243
+ +---------+------------------+--------------------+-------------+---------------+-----+
244
+
245
+ 4 rows in set (0.01 sec)
246
+
247
+ ```
248
+
249
+