2013-01-11 3 views
0

이 얻을 : (# 115 같은) 모든 선수 중PHP MySQL의 점수 페이지가 점수 페이지에 논리를 것이 무엇

  • 현재 사용자 주문 : 점수 DESC BY 모든 사용자 ORDER MySQL은 SELECT 및 현재 사용자가 어디에 있는지 확인하십시오.

  • 더 나은 두 점수 : 현재 사용자를 얻은 다음 "$ currentuserscore"점수> 2를 선택하십시오.

  • 두 점수가 적다 : 현재 사용자를 얻은 다음 < "$ currentuserscore"점수를 선택하십시오.

나는 이것이 매우 버그가 있다고 느낍니다. 다른 방법이 있습니까? 옵션의 경우 1

답변

1

는 :

select count(1) as count from users where score>=$user_score

이것은 당신에게 사람의 순위를 제공해야합니다. 현재 사용자와 동일한 점수를 가진 사람이 여러 명일 경우 >=>으로 변경하면 결과에 1을 더할 수 있습니다. 옵션 2와 3

:

select * from users where score>$user_score order by score asc limit 2

select * from users where score<$user_score order by score desc limit 2

아니면 모두 5 얻을 수 (전 2,이 후 현재 사용자) 하나 개의 질의에 처음부터 순위를 일단 검색어 :

$start = $user_rank - 2; 
$query = "select * from users order by score asc limit {$start},5"; 

현재 사용자 또는 현재 사용자와 동일한 점수를 가진 사람이 포함되지 않게하려면 이것을 할 수 있습니다 :

$start = $user_rank - 2; 
$query = "select * from users where score!=$user_score order by score asc limit {$start},4"; 
+0

감사합니다.이 친구는 큰 도움이되었습니다. – housamz