2011-08-11 4 views
0

일반적으로 사용자가 이미 투표 한 프로필을 볼 수 없도록 두 번 투표하지 않도록하려면 어떻게해야합니까?PHP/MySQL : 투표 시스템에서 이미 투표 한 프로필을 사용자가 볼 수 없도록하려면 어떻게해야합니까?

각 사용자가 고유 사용자 ID (열 "사용자 ID")를 가진 테이블 ("사용자"라고 함)이 있고 각 사용자가 다른 사용자에게 부여한 투표마다 다른 표 ("투표"라고 함)가 있습니다. ("fromUser", "toUser", "vote"열과 함께 각각의 사용자 ID를 사용하므로) 사용자에게 투표 할 새 무작위 프로필을 표시하려면 현재 사용자를 제외시키는 가장 좋은 방법은 무엇입니까? 사용자는 이미 투표했습니다 (즉, "userID"가 "toUser"이고 "fromUser"가 현재 사용자의 userID 인) "userID"를 제외하십시오.

감사합니다.

+2

당신은 산문의 마지막 문장에서 쿼리를 설명했다. SQL로 변환하십시오.) – Jacob

답변

1
SELECT userID FROM users 
WHERE userID NOT IN (SELECT toUser FROM votes WHERE fromUser = 'theUserIdThatIsVotingNow') 
ORDER BY RAND() LIMIT 1 
+0

고마워요. "NOT IN"과 하위 쿼리를 사용하는 것이 최선의 방법입니까? – ProgrammerGirl

+1

확실한 정의 : P 두 테이블에 합류하여 마법을 쓸 수 있다고 생각합니다. 그러나 당신이 두 번째 테이블에있는 것의 반대를 원하기 때문에 나는 하위 쿼리를 가장 좋아합니다. – hoppa

0

트릭을 수행해야합니다.

SELECT * 
FROM Users 
WHERE userID NOT IN (SELECT toUser FROM Votes WHERE fromUser = '$current_user_userID');