ich komme nicht drauf...
Code: Alles auswählen
SELECT S.player, MAX(S.score) AS HighScoreCount, SUM(S.score) AS HighScoreSum FROM phpbb_ina_games G INNER JOIN phpbb_ina_scores S ON G.game_name=S.game_name GROUP BY S.player ORDER BY HighScoreCount DESC
Damit erhalte ich pro Spieler den Höchsten HIScore und die Summer der HiScores - also auch nicht das, was ich brauche.
Man müsste den MAX-Befehl erweitern können, sodaß von jedem Spiel der höchste HiScore (mit MAX?) rausgesucht wird und dann die Anzahl pro User gezählt wird - oder so irgendwie...
Oder man reduziert die Liste zuerst auf die höchsten HiScores pro Spiel (inkl. User), schreibt die dann in eine extra Tabelle und liest die Anzahl dann mit folgenden Befehl aus:
Code: Alles auswählen
SELECT S.player, COUNT(*) AS HighScoreCount, SUM(S.score) AS HighScoreSum FROM phpbb_ina_games G INNER JOIN phpbb_ina_scores S ON G.game_name=S.game_name GROUP BY S.player ORDER BY HighScoreCount DESC
... oder kann man die Select-Abfrage auch verschachteln?
P.S.: PMA zum Probieren von SQL-Anweisungen ist super, daran hatte ich vorher nie gedacht - ist viel schneller, als via PHP-Datei zu testen
=====
*edit*
folgender Code (z.T. vom Activity Mod) zeigt mir alle HiScores (die Besten Spieler pro Spiel):
Code: Alles auswählen
$sql = "SELECT * FROM " . iNA_GAMES . "
ORDER BY game_name";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, $lang['no_game_data'], "", __LINE__, __FILE__, $sql);
}
$game_count = $db->sql_numrows($result);
$game_rows = $db->sql_fetchrowset($result);
for($i = 0; $i < $game_count; $i++)
{
$game_id = $game_rows[$i]['game_id'];
$game_name = $game_rows[$i]['game_name'];
if ($game_rows[$i]['reverse_list'])
{
$list_type = 'ASC';
}
else
{
$list_type = 'DESC';
}
$sql = "SELECT * FROM " . iNA_SCORES . "
WHERE game_name = '" . $game_name . "'
ORDER BY score $list_type, date ASC";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['no_score_data'], "", __LINE__, __FILE__, $sql);
}
$score_info = $db->sql_fetchrow($result);
$best_score = $score_info['score'];
$best_player = $score_info['player'];
$template->assign_block_vars("game", array(
"BEST_SCORE" => $best_score,
"BEST_PLAYER" => $best_player,
"NAME" => $game_name)
);
}
Wie soll ich die nun zählen lassen, sodaß ich für jeden User die Anzahl der HiScores erhalte? soll ich dazu Arrays verwenden, die kann man doch zählen, oder?
Aber wie teile ich es per PHP mit, welche Spielernamen gezählt werden sollen (mom sind ja noch die Namen mehrmals vertreten)...