나는 사용자를 1 표로 제한하려는 투표 프로그램을 설정 중입니다. 저는 두 개의 테이블을 가지고 있습니다 : (a) 주제 테이블과 (b) 투표 테이블.MYSQL 두 열의 고유 한 키 쌍이 다른 테이블에 존재하지 않는 경우에만 테이블을 어떻게 업데이트합니까?
**Subject_Table**
SID Subject Total_Votes
1 Cows 5
2 Chickens 3
**Vote_Table**
VID Subject User Voteup
1 Cows John 1
총 투표 수는 모든 사용자의 평등 투표 수입니다. 투표 대상이 투표되면 투표 수는 1과 같을 수 있습니다. 나는 아무 문제없이 주제 및 다음 문장을 가지고있는 사용자와 고유 한 값 쌍을 만들었습니다 :
주제를 처음으로 투표한다ALTER TABLE Vote_Table ADD UNIQUE limitvote(Subject,User);
는 다음과 같은 쿼리를 실행합니다
$sql="INSERT INTO Vote_Table (Subject, User,Voteup) VALUES ('$Subject', '$User', '$Voteup') ON DUPLICATE KEY UPDATE up=1";
$q = "UPDATE Subject_Table SET Total_Votes = $votes_up= //current votes plus 1;
하더라도 존 중복 투표는 UP = 1로 인해 투표 테이블에서 항상 1이됩니다. 그러나 Subject_Table에서는 그렇지 않습니다. 제약이 없으면 John은 무한히 투표 할 수 있습니다. 제약 조건은 주체 - 사용자 쌍이어야합니다. John은 다른 주제에 투표 할 수 있고 다른 사용자는 Cows에 투표 할 수 있기 때문에 제약 조건은 제목이나 사용자 일 수 없습니다.
Subject_Table을 업데이트하기 전에 Vote_Table을 확인하여 고유 한 Subject-User 쌍 (Cows 및 John)이 있는지 어떻게 확인할 수 있습니까?
고마워요. 이것은 완벽하게 작동했습니다. 전에는 다른 형식으로 존재하지 않는 곳을 시도해 보았고 작동시키지 못했습니다. 구문에 관한 모든 것입니다. 뷰 제안에 관해서는 뷰를 만들지 만 테이블은 여기서 제시 한 것보다 훨씬 복잡합니다. 생각 나는 제안에 감사드립니다! – tjones
@tjones : 천만에! – ruakh