0

我有一个名为 member_id 和分数的“结果”表。每个 member_id 将有几行,我想将每个 member_id 的分数加在一起,并将它们输出到一个有两列的表中,成员一个分数。

同时,我需要加入一个名为 Members 的表(它与 Results 共享一个公共字段 member_id),以便提取值“fullname”并在输出数据时将其显示在 Member 列中。

我想我可以在一个 SQL 查询中完成所有工作,然后简单地将其输出到一个表中(我已经可以这样做),但我正在努力编写一个可以正确输出数据的查询。

这是来自结果表的数据示例

  • member_id: 分数:
  • 45:5:
  • 45:6:
  • 26:7:
  • 26:2:

并从成员表

  • member_id: 全名:
  • 45:鲍勃·琼斯
  • 26:约翰史密斯:

以及我如何希望可以从 SQL 查询中返回数据

  • 会员: 评分:
  • 鲍勃琼斯:11:
  • 约翰史密斯:9:

忽略冒号,我只是在这里使用它们来分隔值,以便更容易看到。请记住,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>";

?> 

再次编辑:帖子已更正,问题现已解决。谢谢!

4

1 回答 1

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

我使用了 aLEFT JOIN这样没有任何结果的成员仍然会出现(总和为 NULL)。使用常规连接会将这些排除在外。

于 2013-03-30T21:40:16.503 回答