我有这样的结果:All results结果是Ranking list
查询:
$results = $mysqli->query("
SELECT tv.*,
(@rn := @rn + 1) as ranking
FROM (SELECT liige_v.liige_id, liige_v.Eesnimi,
liige_v.Perekonnanimi, punktid, SUM(punktid) AS punktidkokku
FROM tulemus INNER JOIN
liige_v
ON tulemus.liige_id = liige_v.liige_id
GROUP BY tulemus.liige_id
) tv CROSS JOIN
(SELECT @rn := 0) vars
ORDER BY punktidkokku desc;
");
表:
print '<table class="mytable4">';
echo "<tr><th>Koht </th><th>Liikme nimi </th><th> count results</th><th>Punktid</th></tr>";
while($row = $results->fetch_array()) {
print '<tr>';
print '<td>' .$row["ranking"].'</td>';
print '<td>'.$row["Eesnimi"].' '.$row["Perekonnanimi"].'</td>';
print '<td>'.$row["countresults"].'</td>';
print '<td>'.$row["punktidkokku"].'</td>';
print '</tr>';
}
print '</table>';
我如何获得“计算结果”,因为有多少结果给出了总分? 在我的例子中,Aivar Narusson在4场比赛中得到288分(计数结果= 4)
答案 0 :(得分:2)
我认为我理解这个问题。如果您想要计数,只需在聚合中包含count(*)
:
SELECT tv.*,
(@rn := @rn + 1) as ranking
FROM (SELECT liige_v.liige_id, liige_v.Eesnimi,
liige_v.Perekonnanimi, punktid,
COUNT(*) as cnt, SUM(punktid) AS punktidkokku
FROM tulemus INNER JOIN
liige_v
ON tulemus.liige_id = liige_v.liige_id
GROUP BY tulemus.liige_id
) tv CROSS JOIN
(SELECT @rn := 0) vars
ORDER BY punktidkokku desc;