简体   繁体   English

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

[英]php/mysql : top 10 most scores by a member

I am making a scoreboard from a table where members details are stored in one table and scores are stored in another with members foreign keys.我正在从一张表制作记分牌,其中成员详细信息存储在一个表中,分数存储在另一个表中,成员外键。 I know that I can show the leaderboard with:我知道我可以通过以下方式显示排行榜:

$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;

But I am confused how will show the first ten as it seems that may I have to use a loop to show the first ten in a table.但是我很困惑如何显示前十个,因为似乎我可能必须使用循环来显示表中的前十个。 but not sure how it will be used.但不确定它将如何使用。

I think that you want a simple join:我认为你想要一个简单的加入:

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

This generates a resultset the top 10 users by total score, that includes the each user's first and last name.这会生成按总分排名前 10 位的用户的结果集,其中包括每个用户的名字和姓氏。 You can then fetch the resultset row by row and display the results in your application.然后,您可以逐行获取结果集并在您的应用程序中显示结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM