-2
$sum = 0;
$sqlM = "SELECT * FROM players";
$resM = mysql_query($sqlM) or die(mysql_error());
while($rowM = mysql_fetch_array($resM)){
//Total Runs
    $sqlr = "SELECT * FROM runs WHERE pId = ".$rowM['Id']."";
    $resr = mysql_query($sqlr) or die(mysql_error());
    while($rowr = mysql_fetch_array($resr)){
        $sum += $rowr['runs'];
    }
    $totalRuns[$rowr['pId']] = array(
         array( 
        'id' => intval($rowr['pId']),
        'score' => $sum
        )
    );


};

各プレーヤーからすべての合計ランを取得し、並べ替えのために配列に追加する方法は? 2 つのテーブル プレーヤーとランがあるため、各プレーヤーの合計ランが必要であり、それを配列に追加して、最高の 5 ラン スコアラーを取得できるようにします。知っていることはすべて試しましたが、うまくいきませんでした。上記のコードは私がこれまでに行ったことですが、機能していません。

4

2 に答える 2

0

そのような別の配列を作成しないのはなぜですか?

$player;
$totolarun;
$player_total=array();

$sum = 0;
$sqlM = "SELECT * FROM players";
$resM = mysql_query($sqlM) or die(mysql_error());
while($rowM = mysql_fetch_array($resM)){
//Total Runs
        $sqlr = "SELECT * FROM runs WHERE pId = ".$rowM['Id']."";
        $resr = mysql_query($sqlr) or die(mysql_error());
        while($rowr = mysql_fetch_array($resr)){
                $sum += $rowr['runs'];
                $totolarun=$sum;
        }
        $player = $rowr['pId'];
        $player_total[$player]= $totolarun;

};
foreach($player_total as $key=>$value){
echo $key ." = ".$value." <br>"; 
}

var_dump($player_total);

それがあなたにアイデアを与えることを願っています。ここで小さな編集;O

于 2013-09-29T12:52:05.517 に答える
0

次のクエリを試してください。

SELECT players.id, COUNT(runs.pId) as runCount
FROM players
JOIN runs ON runs.pId = players.id
GROUP BY players.id
ORDER BY runCount DESC
LIMIT 5

試していないので、構文エラーがある可能性があります。もしそうなら、修正できるようにコメントに投稿してください。

編集: (可能な) 構文エラーの修正

于 2013-09-29T12:56:41.570 に答える