teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

肝心なところがちょっと抜けてたので修正

2021/09/21 07:41

投稿

surface_0
surface_0

スコア497

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  $comments = $db->query('SELECT u.user_name, c.*, p.* FROM users u, comments c, posts p WHERE u.user_id=c.comment_user_id AND p.post_id=c.comment_post_id ORDER BY c.created_time DESC');
3
3
  ```
4
4
 
5
- ここのSQLは`users`と`comments`の結合条件しか書かれておらず、`comment_post_id`の指定が無いのでレコードが全件取得されます。
5
+ ここのSQLのWHERE句には`users`、`posts`と`comments`の結合条件しか書かれておらず、`comment_post_id`の指定が無いので、どの記事から見てもコメントのレコードが全件取得されます。
6
6
 
7
7
  プレースホルダで`comment_post_id`の値を指定して絞り込んでください。
8
8
  ```php

1

テーブル名タイポ修正

2021/09/21 07:41

投稿

surface_0
surface_0

スコア497

answer CHANGED
@@ -12,13 +12,13 @@
12
12
 
13
13
  ```
14
14
 
15
- 他に突っ込みたいところは多数あるのですが、質問と関係ないので控えておきます
15
+ 他に突っ込みたいところは多数あるのですが、質問と関係ないので控えておきますけども
16
16
  蛇足として、MySQLならばテーブル結合条件は基本的にWHERE句に書くよりFROM句に書く方が自然だと思うのでご参考ください。
17
17
 
18
18
  ```sql
19
19
  SELECT u.user_name, c.*, p.*
20
20
  FROM comments c
21
- INNER JOIN user u ON u.user_id = c.comment_user_id
21
+ INNER JOIN users u ON u.user_id = c.comment_user_id
22
22
  INNER JOIN posts p ON p.post_id = c.comment_post_id
23
23
  WHERE c.comment_post_id = ?
24
24
  ORDER BY c.created_time DESC