在SQL数据库中添加值并使用PHP在表中显示它们

时间:2013-03-30 21:36:00

标签: mysql

我有一个名为'结果'的表,其中包含member_id和得分。每个member_id都会有几行,我想将每个member_id的得分加在一起,然后将它们输出到一个包含两列的表中,即成员分数。

同时,我需要连接一个名为Members的表(它与一个公共字段,member_id和Results共享),以便提取值'fullname'并在输出数据时在Member列中显示

我认为我可以在一个SQL查询中完成所有操作,然后将其输出到一个表中(我已经可以这样做了)但是我很难编写一个可以正确输出数据的查询。

以下是“结果”表格中的数据样本

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

来自会员表

  • member_id:fullname:
  • 45:Bob Jones:
  • 26:约翰史密斯:

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

  • 会员:得分:
  • Bob Jones:11:
  • John Smith: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>";

?> 

再次编辑:发布更正后问题现已解决。谢谢!

1 个答案:

答案 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作为总和)。使用常规联接会将其删除。