我有一个名为'结果'的表,其中包含member_id和得分。每个member_id都会有几行,我想将每个member_id的得分加在一起,然后将它们输出到一个包含两列的表中,即成员分数。
同时,我需要连接一个名为Members的表(它与一个公共字段,member_id和Results共享),以便提取值'fullname'并在输出数据时在Member列中显示
我认为我可以在一个SQL查询中完成所有操作,然后将其输出到一个表中(我已经可以这样做了)但是我很难编写一个可以正确输出数据的查询。
以下是“结果”表格中的数据样本
来自会员表
我希望如何从SQL查询中返回数据
忽略冒号,我只是在这里使用它们来分隔值,以便更容易看到。请记住,Results表中将有一个未知数量的用户和未知行数,必须进行迭代。
编辑:
这是我现在拥有的
$sql = "SELECT Members.fullname 'Name', Results.score 'Score' FROM Members
JOIN Results ON Results.member_id=Members.member_id
GROUP BY Members.member_id, Members.fullname
";
$result = mysql_query($sql)or die(mysql_error());
echo "<table>";
echo "<tr>
<th>Name</th>
<th>Score</th>
</tr>";
while($row = mysql_fetch_array($result)){
$names = $row['Name'];
$score = $row['Score'];
echo "<tr>
<td style='width: 100px;'>".$names."</td>
<td style='width: 100px;'>".$score."</td>
</tr>";
}
echo "</table>";
?>
再次编辑:发布更正后问题现已解决。谢谢!
答案 0 :(得分:1)
这个选择应该可以解决问题:
SELECT Members.fullname, SUM(Results.score) FROM Members
LEFT JOIN Results ON Members.member_id=Results.member_id
GROUP BY Members.member_id, Members.fullname
我使用了LEFT JOIN
,因此没有任何结果的成员仍会显示(以NULL作为总和)。使用常规联接会将其删除。