0

基本的に特定のユーザーの投票を収集するテーブルがあります。

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
4

2 に答える 2

0

これを試して:

SELECT count(*) As `votes`, user_id, ip, DATE( timestamp ) the_date
FROM `user_votes`
where the_date > '2012-07-26'
GROUP BY user_id, ip, DATE( timestamp )
having count(*)>20 
ORDER BY DATE( timestamp ) ASC, user_id ASC, votes DESC

count(*)> 20の場合、20を超えるカウントが得られます

于 2012-08-02T07:09:56.520 に答える
0

有効な投票数を持つユーザーを取得するには、次のことを試してください。

SELECT COUNT(*) As `votes`, user_id, ip, DATE( timestamp ) the_date
FROM `user_votes`
WHERE DATE(timestamp ) > '2012-07-26'
GROUP BY user_id, ip, the_date
HAVING COUNT(*) <= 20
ORDER BY the_date ASC, user_id ASC, votes DESC;
于 2012-08-02T07:10:25.850 に答える