我有一个游戏,用户可以在数据库中保存名称和分数。
列
名称,尝试,百分比正确,所用时间,图像集
这些列中有3个基于分数
尝试,百分比正确,花费时间,
目前我的表显示时间正在上升。
$sql = "SELECT * FROM Score ORDER BY time ASC LIMIT 5";
是否有比较分数
这是2分的一个例子
第1行: 46,52%,02:36
第2行: 38,63%,02:47
在那里,我可以平均比较哪些应该是基于所有3个分数的顶部。
第一行有更多的尝试,更少的百分比正确但更快的时间。 第二行尝试次数较少,百分比较高,但时间较慢。
在理论上尝试:ASC,百分比:DESC,时间Asc
如果我将订单更改为:
$ sql =“SELECT * FROM得分ORDER BY'时间ASC','尝试ASC','百分比 DESC'限制5“;
它会使行混乱,还是会根据所有3
的顺序显示它们此图片正在使用时间ASC
最小尝试次数为12,即100%
我需要将Tries与时间进行比较
我可以分时间/尝试然后按结果排序
是对的吗?
$sql = "SELECT * FROM Score ORDER BY time / tries ASC LIMIT 5";
答案 0 :(得分:1)
如果要分割2列,请按结果使用
$sql = "SELECT * FROM Score ORDER BY time / tries ASC LIMIT 18446744073709551615";
然后,如果您希望可以在表格中显示该结果
例如
<td>".round($data[4] / $data[2],2)." Seconds</td>
/将按尝试划分时间,然后用round()换行以舍入结果。
在这种情况下,我建议使用round(???,2)来输出类似于3.53秒的内容
如果您想获得平均分,请使用时间+尝试 - 百分比
低可能尝试= 12 即使尝试了12次,时间仍然很高 得到12次尝试将给出100%这是一个很高的值,所以它最好减去那个。
12次尝试+ 1m 30s - 100%
12次尝试+ 10h 30m 30s - 100%
答案 1 :(得分:0)
评论太长了。
"Is there away that i can compare on average which of those should be top based on all 3 scores?"
是。但首先你必须弄清楚方法是什么。然后,您可以在查询中实现它。
其次,您的查询是:
SELECT *
FROM Score
ORDER BY 'time ASC', 'tries ASC', 'percent DESC'
LIMIT 5;
这将不执行任何操作,因为它按三个常量排序。删除单引号,仅将它们用于字符串常量:
SELECT *
FROM Score
ORDER BY time ASC, tries ASC, percent DESC
LIMIT 5;
在实践中,这非常像:
ORDER BY time ASC
除非很多人在两行上的时间完全相同,否则不会使用额外的订购标准。