php / mysql:成员获得的最高10分

时间:2020-04-23 16:48:31

标签: php mysql sql join group-by

我正在用一张表制作记分板,其中成员详细信息存储在一个表中,而分数存储在另一个表中,其中包含成员外键。我知道我可以通过以下方式显示排行榜:

$lbquery = mysql_query("SELECT mid, SUM( score ) AS count FROM `memberscores` GROUP BY mid ORDER BY count DESC");
$lbrow = mysql_fetch_array($lbquery);

$memid = $lbrow["mid"];
$memscore = $lbrow["count"];

    $memquery = mysql_query("SELECT firstname, lastname FROM `members` WHERE `mid`=".$memid);
    $memrow = mysql_fetch_array($memquery);
    $fname = $memrow["firstname"];
    $lname = $memrow["lastname"];

echo $lname." ".$fname." = "$memscore;

但是我很困惑如何显示前十个,因为似乎不得不使用循环来显示表中的前十个。但不确定如何使用。

1 个答案:

答案 0 :(得分:1)

我认为您想要一个简单的联接:

SELECT m.mid, m.firstname, m.lastname, SUM(s.score) cnt 
FROM memberscores s 
INNER JOIN members m ON m.mid = s.mid
GROUP BY m.mid, m.firstname, m.lastname 
ORDER BY cnt DESC
LIMIT 10

这将生成一个结果集,该结果集按总得分排在前10位,其中包括每个用户的名字和姓氏。然后,您可以逐行获取结果集并在您的应用程序中显示结果。