GROUP BYを使用する必要があります どのグループに基づいてカウントするかを説明します。 GROUP BYなし ご覧のとおり、結果セット全体の1つのグループを取得するだけです。
標準SQLでは、GROUP BYに含める必要があります SELECTに含まれるすべての非集計式に句を付ける ただし、MySQLを使用すると、これを行わなくても、次のような式を使用できます。 (少なくとも、厳密モードでない場合。厳密モードがこの要件を強化して標準SQLに一致させるかどうかはわかりません)
SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`
items.idと仮定します はこのテーブルの主キーであるため、itemsの複数の行に表示されることはありません。 、これは望ましい効果をもたらすはずです。
GROUP BYを紹介したら WHEREの違いを理解することが重要です およびHAVING 条項。前者は前の条件を適用します グループと集計が適用され、後者は後で適用されます 。つまり、HAVINGを使用する必要があります そのカウントに基づいて条件付きを実行したい場合。 WHERE 最初の例の句は集計の前に適用されるため、結果は指定された日付以降に作成されたポイントの数になります。