0

member_id とスコアの「結果」というテーブルがあります。各 member_id には複数の行があり、各 member_id のスコアを合計して、Member と Score の 2 つの列を持つテーブルに出力したいと考えています。

同時に、値「フルネーム」を抽出し、データの出力時にそれをメンバー列に表示するために、Members というテーブル (結果と共通のフィールド member_id を共有する) に結合する必要があります。

1 つの SQL クエリですべてを実行し、それを単純にテーブルに出力できると思いますが (これは既に実行できます)、データを正しく出力できるクエリを作成するのに苦労しています。

結果テーブルのデータのサンプルを次に示します。

  • member_id: スコア:
  • 45:5:
  • 45:6:
  • 26:7:
  • 26:2:

そしてメンバーテーブルから

  • member_id: フルネーム:
  • 45: ボブ・ジョーンズ:
  • 26: ジョン・スミス:

そして、SQLクエリからデータが返されることをどのように望んでいますか

  • メンバー: スコア:
  • ボブ・ジョーンズ: 11:
  • ジョン・スミス: 9:

ここではコロンを使用して値を区切り、見やすくしています。結果テーブルには、反復処理が必要な不明な数のユーザーと不明な数の行が存在することに注意してください。

編集:

ここに私が今持っているものがあります

$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

LEFT JOIN結果のないメンバーがまだ表示されるように (合計として NULL で) を使用しました。通常の結合を使用すると、それらは除外されます。

于 2013-03-30T21:40:16.503 に答える