2012-01-03 8 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

はい私はこれについて考えましたが、1つのクエリで可能かどうか – cgweb87

1

1つ以上のフィールドをORDER BYすることができます。計算フィールドを持つこともできます。

SELECT money FROM accounts ORDER BY money, balance, age, SUM(money + balance) DESC LIMIT 10 
関連する問題