2013-11-04 4 views
1

사용자가 하루에 한 번 투표 할 수있는 항목이 있습니다. 나는 이것을 내 데이터베이스에 저장하고있다.
이제 사용자가이 항목에 대해 하루 후 투표를 할 수 있는지 확인해야합니다.Mysql - 하루에 한 번 투표

는 지금까지이있어 :

SELECT count(*) 
FROM entries e 
WHERE e.voterID =1 
AND e.pID =1 
AND e.date < NOW() - INTERVAL 1 
DAY 

을하지만 잘에 작동하지 않습니다, DB에 유권자와 PID를 더 많은 항목이있을 때. 유권자는 동일한 항목에 대해 여러 번 투표 할 수 있습니다.
동일한 사용자 및 동일한 프로젝트에 대해 더 많은 항목이 있으면 count (*)가 1보다 큰 값을 반환합니다.

사용자가 올바르게 다시 투표 할 수 있는지 어떻게 확인합니까?
감사합니다.

+0

datediff() 함수를 검색 – wxyz

+0

그래,하지만 최신 항목을 확인해야합니까? – Marek123

+0

하루가 지나면 하루 24 시간 또는 다음날 오후 11시에 투표 할 수 있습니다. – Fredd

답변

0

현재 사용자가 최근 24 시간 동안 현재 pID에 투표 했습니까? 그렇다면이 쿼리에서 votecount 결과는 0보다 커집니다.

SELECT count(*) AS votecount 
    FROM entries AS e 
    WHERE e.voterID = 1 
    AND e.pID = 1 
    AND e.date >= NOW() - INTERVAL 1 DAY 

날짜를 비교하여 >=입니다. 샘플 코드는 <입니다.

큰 테이블에서이 쿼리를 효율적으로 실행하려면 (voterID, pID, date)에 복합 인덱스가 필요합니다.

관련 문제