2012-08-09 5 views
0

한 쿼리에서 모든 사용자의 elses 통계를 기반으로 한 사용자에 대해 세 개의 통계를 말하는 순위를 찾는 방법은 무엇입니까? > 앨런
레벨 - - (3 순위)
승> 25 -> 347 (1 레벨)
손실 -
Mysql 한 사용자의 둘 이상의 열의 순위

이것은> 2 (145 순위)

이용자

추천 내가 가지고있는 것

function get_rank($what,$user) { 
$v = mysql_query(" 
    SELECT username, @curRank := @curRank + 1 AS rank FROM `users`, 
    (SELECT @curRank := 0) r 
    WHERE id = '".$user."' ORDER BY `".$what."`"); 
    $a = mysql_fetch_array($v); 
     return $v['rank']; 
} 

결코 작동하지 않습니다.

테이블 구조

 
Id Username level wins losses
1 Alan 25 347 2
2 Joe 34 100 4
3 Sam 12 600 12

감사합니다.

+1

당신은 우리는 귀하의 요청에 보여줄 수 있을까? – sel

+0

어쩌면 그것은 어디에서 user = 'Alan'이 될까요? 귀하의 테이블이 – MimiEAM

+0

위에 작성한 것처럼 보이면 테이블 구조를 게시하십시오 :) –

답변

1
SELECT * FROM 
(SELECT m.name,rank_level,rank_win ,rank_loss 
FROM 
    (SELECT @rank := @rank + 1 AS rank_level,name,id FROM users ORDER BY level DESC) m 
    inner join (SELECT @rankw := @rankw + 1 AS rank_win,name,id 
     FROM users ORDER BY win DESC) w on m.id=w.id 
    inner join (SELECT @rankl := @rankl + 1 AS rank_loss,name,id 
     FROM users ORDER BY loss DESC) l on m.id=l.id 
    , (SELECT @rank := 0) m2,(SELECT @rankw := 0) w2,(SELECT @rankl := 0) l2 
) k 
WHERE k.name= 'Alan'; 

SQL FIDDLE HERE

+0

감사! 이것은 아주 잘 작동합니다. – AlanPHP

관련 문제