私は2つのテーブルを持っています。私はsame_team上のすべてのユーザーの値(personal_score)を合計し、一時的にteam_nameに割り当て、次にそれらを最高から最低に並べ、最後に最高10を取得します。ループするMySQLクエリを書くことは可能ですか?
User
- int id
- varchar team_name
- int personal_score
Team
- int id
- varchar team_name
それが理にかなっているのであれば...結果は、何かのような... summed_scoreがそれぞれに等しいTEAM_NAMEを持っているユーザーテーブル内のすべてのpersonal_score値の合計である
team_name summed_score
Chicago 92
RedBulls 90
Knights 82
だろうチームテーブルのteam_name。
今私はこれをPHPを使っているようにしていますが、私は純粋にSQLレベルでやりたいのです...注:私はmedoo.phpを使ってPHPのデータベースに問い合わせています。
function ComparePersonalScores($a, $b)
{
return $b["total_score"] - $a["total_score"];
}
// Get all the Team Names possible...
$Teams = $Database->select("teams", "team_name");
$TeamResult_Objects = [];
foreach($Teams as $team)
{
$total_score = $Database->query("SELECT SUM(personal_score) as 'summed_score' FROM users WHERE team_name='" . $team . "';")->fetchAll();
$result_object["total_score"] = $total_score[0]["summed_score"];
$result_object["name"] = $team;
array_push($TeamResult_Objects, $result_object);
}
usort($TeamResult_Objects, "ComparePersonalScores");
$TeamResult_Objects = array_slice($TeamResult_Objects, 0, 10);
何を試しましたか?あなたのSQLを入れて誰かがあなたを助けることができます – Syfer
あなたのサンプルの結果に基づいて、 'SELECT team_name、SUM(score)FROM user GROUP BY team_name; –