2012-01-03 62 views
1

我有一个充满统计数据库。建设奖励大厅mysql查询?

我知道如何做这样的事情来获得前10名账户有一定的统计...

SELECT money FROM accounts ORDER BY money DESC LIMIT 10 

这将显示前10个账户的钱的统计数据。说如果我有10个不同的统计数据,有没有一种查询方法可以根据所有统计数据找出前十名球员的位置?或者它会涉及很多的查询,然后用我选择的语言来显示它?

感谢

+0

请通过'查询,将制定出的十强选手基于所有statistics'位置更具体的 - 你的意思,你要评估等级之外的谁是每个顶部统计结合?就像如果帐户1是10/10的统计数据的顶部,他是在上面,其次是谁是9/10数据的顶部,然后是8/10,等等......? – Nonym 2012-01-03 08:32:22

+0

是的,我想根据所有数据找到前十名。 – cgweb87 2012-01-03 09:53:51

回答

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 2012-01-03 09:54:51

1

您可以订购一个或多个字段。您也可以计算字段。

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