我正在用一张表制作记分板,其中成员详细信息存储在一个表中,而分数存储在另一个表中,其中包含成员外键。我知道我可以通过以下方式显示排行榜:
$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;
但是我很困惑如何显示前十个,因为似乎不得不使用循环来显示表中的前十个。但不确定如何使用。
答案 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位,其中包括每个用户的名字和姓氏。然后,您可以逐行获取结果集并在您的应用程序中显示结果。