基本的に特定のユーザーの投票を収集するテーブルがあります。
ID | user_id | ip | timestamp
誰かがユーザーに投票するたびに、投票した user_id、IP アドレス、日時をログに記録するエントリが作成されます。不正行為を防止するため、ユーザーごとに IP ごとに 1 日あたり 20 票を超える投票は許可されていません。
今、特定の日付から始めて、これらの投票を確認したいと思います。次のクエリを自分で思いつきましたが、私は決して専門家ではないので、これが正しいかどうか誰かに教えていただければ幸いですそれ。
SELECT count(*) As `votes`, user_id, ip, DATE( timestamp ) the_date
FROM `user_votes`
GROUP BY user_id, ip, the_date
HAVING the_date > '2012-07-26'
ORDER BY the_date ASC, user_id ASC, votes DESC