両方のテーブルをJOINSする SQL クエリを記述して、必要なすべての情報を返すことができます。
SELECT
p.id,
p.title,
p.body,
p.date,
COUNT(c.id)
FROM Post p
LEFT JOIN Comments c ON p.id = C.post_id
GROUP BY p.id, p.title, p.body, p.date
ORDER BY p.date DESC
LIMIT 100
Jeff Atwood は、結合がどのように機能するかを説明する優れたビジュアル ガイドを提供しています。
日付順に上位 100 件の投稿を効果的に選択し、コメントの合計を数えます (コメントが存在する場合 - そのため、LEFT JOIN を使用しますが、INNER JOIN を使用する場合は、コメントのある投稿のみを返します)。
GROUP BYは、それが COUNT (および SUM や AVG などの他の集計関数が機能する方法) であるため、行をカウント/合計/平均化するためのルールを伝える必要があります。
作成された順序で投稿を返すように、投稿日を DESCend 順 (新しい順) にORDER BYします。
LIMIT 100 ステートメントは、MySql の最初の 100 行のみを返します。要約の投稿数を変更したい場合は、任意の数 (トップ 10、50 など) に変更します。
全体的な結果として、投稿情報とコメント数をすべて 1 つのクエリに含む結果セットが得られます。これらの結果は、適切と思われる方法で Web アプリケーションに表示できます。