2012-01-03 2 views
1

통계가 가득한 데이터베이스가 있습니다. 시상식 홀 mysql 쿼리를 작성 하시겠습니까?

나는 ... 같은 작업을 수행하여 특정 통계와 상위 10 계정을 얻는 방법을 알고 돈 통계에 대한 상위 10 개 계정을 보여줄 것
SELECT money FROM accounts ORDER BY money DESC LIMIT 10 

. 10 가지 통계가 있다면 모든 통계를 기반으로 상위 10 명의 순위를 결정하는 쿼리를 수행하는 방법이 있습니까? 아니면 많은 질문이 포함 된 다음 내 언어 선택을 사용하여 표시 할 수 있습니까?

감사

+0

이 친절하게 모든 statistics'에 따라 상위 10 플레이어의 위치를 ​​작동 쿼리'보다 구체적으로 - 각의 최고 누가 당신이 밖으로 순위를 평가하려는 것을 의미 할 결합 된 통계? 계정 1이 10/10 통계의 최상위 순위 일 때와 마찬가지로, 최상위 순위에 올라서고 9/10 통계, 8/10 등의 순위를 올린 사람이 그 뒤를 따릅니다. – Nonym

+0

예 모든 통계를 기반으로 상위 10 위를 찾고 싶습니다. – cgweb87

답변

1

당신은 쿼리에 여러 종류를 추가 할 수 있습니다, 그들을 정렬하는 주문을 마련 할 것이다, 그러나 아마 당신이

SELECT money FROM accounts ORDER BY money DESC, points DESC LIMIT 10 
원하는 결과를 제공하지 않습니다

하지만 점수 시스템을 생각해 낼 수는 있지만 많은 쿼리를 의미합니다. 통계 당 적어도 하나는 이미 쓴 것과 비슷합니다. 다음과 같은 내용 :

$result = mysql_query('SELECT money, account_id FROM accounts ORDER BY money DESC LIMIT 100'); 

$accounts = array(); 
$points = mysql_num_rows($accounts); 
while ($row = mysql_fetch_assoc($result)){ 
    $accounts[$row['account_id']] += $points; 
    $points--; 
} 

그리고 모든 점수 유형에 대해 이것을 반복하십시오. 그런 다음, 포인트를 기반으로 배열을 정렬하면 상위 목록을 알 수 있습니다.

+0

예 이것에 대해 생각해 보았습니다. 하나의 쿼리로 가능했는지 궁금했습니다. – cgweb87

1

하나 이상의 필드를 ORDER BY 할 수 있습니다. 계산 된 필드를 가질 수도 있습니다.

SELECT money FROM accounts ORDER BY money, balance, age, SUM(money + balance) DESC LIMIT 10 
관련 문제