ABfrage gesucht / Zählen von variablen Namen

PhoenixDH

Erfahrenes Mitglied
Ich hab einfach keine Idee wie ich das realisieren kann.

Ich habe eine Tabelle in der Highscores eingetragen sind. Dazu gehören die ID, der Spieler mit den meisten Punkten und der Name des Spiels. Jetzt möchte ich herausfinden, wer bei den meisten Spielen vorne ist, sprich wer die meisten Highscores hat.

Kann man das mit einer SQL Abfrage lösen ?
Denke nicht, da muss noch ein PHP Script dazu oder ?
 
Hab das jetzt irgendwie gelöst !

Kann da mal jemand von euch drüberschaun wegen der Performance ? Denn auf deSeite auf der das aufgerufen werden soll befinden sich jede Menge SQL Abfragen, da sollte man schon unnötige Sachen sparen !

Was muss ich machen, wenn es mehrere Leute mit z.B. 3 Einträgen gibt, ich bekomme das jetzt aber wirklich net hin !

Hier der Code:
Code:
$most = 0;

$r_games = thwb_query("SELECT count(id) AS gamecount FROM ".$pref."arcade_scores");
$games = mysql_result($r_games, 0);

echo "Anzahl Spiele: ". $games ."<br><br>";

$r_king = thwb_query("SELECT scores_u_name FROM ".$pref."arcade_scores ");
while ($king = mysql_fetch_array( $r_king ))
{

   for ($i = 1; $i <= $games; $i++) 
   {
   if ($king['scores_u_name'] != $highscore_king)
      {
	$score_king = $king['scores_u_name'];
	$r_count = thwb_query("SELECT count(id) AS high_count FROM ".$pref."arcade_scores WHERE scores_u_name = '". $king[scores_u_name] ."'");
	$r_count2 = thwb_query("SELECT scores_u_name FROM ".$pref."arcade_scores WHERE scores_u_name = '". $king[scores_u_name] ."'");
	$count2 = mysql_fetch_array($r_count2);
	$count = mysql_result($r_count, 0);
	if ( $count > $most)
	   {
	   $most = $count;
	   $highscore_king = $count2['scores_u_name'];
	   echo $highscore_king."<br>";
	   }
      }
    }
}

echo "<br><br>REAL: ".$highscore_king;
 
PhoenixDH hat gesagt.:
Jetzt möchte ich herausfinden, wer bei den meisten Spielen vorne ist, sprich wer die meisten Highscores hat.

Kann man das mit einer SQL Abfrage lösen ?

Sicher geht das aber welches Ergebnis möchtest du ?
Wer bei den meisten Spielen vorn ist oder wer die meisten Punkte insgesamt hat?

Das Ergebnis muss nicht das Gleiche sein :)

select *,sum(punkte) as hiscore from tabelle group by user order by hiscore desc

select *,count(spiel) as mengespiele from tabelle group by user order by mengespiele desc
 
Das richtige Ergebnis liefert mir die Sachen ja, nämlich wer bei den meisten Spielen die höchste Score hat, z.B. Jörg 3 Spiele !

Jetzt ist aber ja das Problem, das auch mehrere Leute bei 3 Spielen die höchste Score haben können, denn ich hab über 10 Spiele.

Dann hätte ich gerne das der Name nicht überschrieben wird, sondern ein Komma zwischen den Namen steht.

Wie muss ich dazu das Script oben anpassen ?

Und mich würde interessieren ob man das Script oben von der Performance verbessern kann ?
 

Neue Beiträge

Zurück