このクエリを実行していますが、必要なものが返されないことを除けば機能します...
SELECT COUNT(up.profileOwnerUserNumber)
FROM profiles up
INNER JOIN userRatings ur
ON (ur.userRatingTargetUser = up.profileOwnerUserNumber)
WHERE ur.userRatingDateTime>(now()-INTERVAL 1 WEEK)
このクエリから 8 が返されます。(ur.userRatingTargetUser = up.profileOwnerUserNumber) で見つかったすべてのインスタンスをカウントしています。しかし、userRatings テーブルには、まったく異なる 4 つのエントリがあります。残りの 4 つのエントリは、既に見つかった番号の重複です。COUNT が 4 を返すようにしたい - 8 つのエントリすべてではなく、明らかに異なる ur.userRatingTargetUser 番号が見つかった数。
Table userRatings:
userRatingNumber int (autoincrement)
userRatingTargetUser int
Table profiles:
profileNumber int (autoincrement)
profileOwnerUserNumber int
userRatingTargetUser と profileOwnerUserNumber の両方に、別のテーブルを使用して設定されているため、一致する可能性のある int 値があります。
Table users:
userNumber int (autoincrement)
これらの余分なレコードをカウントしないようにクエリを変更するにはどうすればよいですか? SELECT DISTINCT が機能しませんでした。