回答編集履歴
2
肝心なところがちょっと抜けてたので修正
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
テーブル名タイポ修正
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
|
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
|