Php 将数学放入sql查询
我正在尝试创建一个高尔夫直播排行榜,它是基于一个球员拥有多少与理想分数相等的分数 理想点是每个孔2个点。因此,如果一名球员打了3洞,他应该得到6分。如果玩家有6分,玩家的分数将是0。如果玩家赚得更多,他会得到+分,而得到更少的-分 这里的问题是球员们会在不同的洞里,有些人打了2洞,有些人打了3洞,也许有些人打了7洞。所以我需要计算总点数,计算洞的数量,然后减去它们,然后按减去的顺序排列 以下是我到目前为止得到的信息:Php 将数学放入sql查询,php,mysql,math,Php,Mysql,Math,我正在尝试创建一个高尔夫直播排行榜,它是基于一个球员拥有多少与理想分数相等的分数 理想点是每个孔2个点。因此,如果一名球员打了3洞,他应该得到6分。如果玩家有6分,玩家的分数将是0。如果玩家赚得更多,他会得到+分,而得到更少的-分 这里的问题是球员们会在不同的洞里,有些人打了2洞,有些人打了3洞,也许有些人打了7洞。所以我需要计算总点数,计算洞的数量,然后减去它们,然后按减去的顺序排列 以下是我到目前为止得到的信息: $result = mysqli_query($con,"SELECT SUM
$result = mysqli_query($con,"SELECT SUM(ls.points) points
, COUNT(ls.fk_playerid) holes
, ls.fk_playerid
, u.fname
, u.lname
FROM ".$prefix."_livescore ls
INNER JOIN ".$prefix."_users u
ON ls.fk_playerid = u.userid
WHERE fk_gameid=$gameid GROUP BY fk_playerid ORDER BY points DESC");
while($row = mysqli_fetch_array($result)){
$idealpoints = $row['points'] - ($row['holes'] * 2);
$players[] = array('uid' => $row['fk_playerid'], 'name' => $row['fname'].' '.$row['lname'], 'hole' => $row['holes'], 'points' => $idealpoints);
}
在这个例子中,我只是计算点并按其排序。然后在循环中,我计算出理想点是什么。这使得排行榜不正确,因为打了最多洞的球员最有可能领先
希望这有意义,希望得到帮助…:-) 我不太确定您是在要求一个公式来进行正确的排名,还是只想在sql表达式中使用现有公式。我同意第一个假设 这个公式几乎是正确的。您还需要将
$idealpoints
与所打的洞数分开,如下所示:
$idealpoints=($row['points']-($row['holes']*2))/$row['holes']
因此,您将得到一个十进制值,您的排名可以基于该值。值越低,排名就越好;像这个例子:
球员1在2洞后得到5分(+比理想值高1)==(5-4)/2=
0.5理想点。球员2在3洞后得到7分(+比理想值高1分) ==(7-6)/3=0,33理想点
球员2的排名将更高,因为他在三个洞后只有+1。球员1在两个洞后已经是+1。哦,是的。。。工作就像一个符咒:-)
SELECT fk_playerid, fname, lname, points, holes, points-2*holes diff
FROM (
SELECT SUM(ls.points) points
COUNT(ls.dk_playerid) holes,
ls.fk_playerid, u.fname, u.lname
FROM {$prefix}_livescore ls
INNER JOIN {$prefix}_users u
ON ls.fk_playerid = u.userid
WHERE fk_gameid = $gameid
GROUP BY fk_playerid) x
ORDER BY diff desc