@AgRizzoが上でコメントしたように、おそらくサブクエリをグループ化する必要があります。
さらに、内部結合では、両方のテーブルで結合基準が一致するレコードのみが生成されます。つまり、返信がない投稿は除外されます。
結合基準が一致しない場合でも 1 つのテーブルからレコードを保持する場合は、外部結合が必要になります。この場合、左外部結合 (結合の左オペランドからのレコードが常に結果セットに含まれるようにするため)。
詳細については、SQL 結合の視覚的な説明を参照してください。
したがって:
SELECT * FROM forum_posts AS post LEFT JOIN (
SELECT parent AS rparent
, author AS rauthor
, MAX(created_at) AS rdate
FROM forum_replies
GROUP BY parent
) AS reply ON post.id = reply.rparent
または、結合後にグループ化を実行します。
SELECT post.*
, reply.parent AS rparent
, reply.author AS rauthor
, MAX(reply.created_at) AS rdate
FROM forum_posts AS post
LEFT JOIN forum_replies AS reply ON reply.parent = post.id
GROUP BY post.id