• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Die 10 Spieler mit den meisten Highscores auswählen

Status
Für weitere Antworten geschlossen.

FleyerShaver

Neues Mitglied
Ich habe eine mysql-tabelle die so aufgebaut ist:
Code:
id | name | score
INSERT:
1 | ich | 100
2 | Fleyer | 50
3 | Fleyer | 100
Aus dieser Tabelle möchte ich die 10 Leute mit den meisten Highscores raussuchen. Wie mach ich das
 
PHP:
$sql = "SELECT
           id,
           name
       FROM
           tabellenname
       ORDER BY
           score DESC
       LIMIT
           10";
$erg = mysql_query($sql) OR die(mysql_error());

//Angaben ausgeben etc.
(ungetestet)
 
Zuletzt bearbeitet von einem Moderator:
ORDER BY alleine geht auch, er nimmt dann automatisch ASC

(wär hier im Beispiel falscher Ansatz, aber zu Frage ob es ohne geht ;))
 
Das hätte ich auch selber geschafft. ES geht um folgendes. Nachher soll da zum Beispiel das ausgegeben werden:
Code:
Spieler Highscores
Fleyer 2 
ich 1

Die Zahl hinter dem Namen richtet sich danach wie of in der Spalte name der name der davor steht vorkommt.
 
PHP:
$sql = "SELECT
           count(*) AS anzahl
        FROM
           tabelle
        WHERE
           name = 'Fleyer'";
$erg = mysql_query($sql) OR die(mysql_error());
echo $erg['anzahl'];
?
 
PHP:
<?php

  $sql = "SELECT
           id,
           name
       FROM
           tabellenname
       ORDER BY
           score DESC
       LIMIT
           10";
  $result = mysql_query($sql) or die("Fehler: ".mysql_error());

  echo "<table>";
  echo "<tr><th>Spieler</th><th>Highscores</th></tr>";

  if(mysql_num_rows($result)) {
      while ($row = mysql_fetch_assoc($result)) {
          echo "<tr><td>".$row['name']."</td><td>".$row['score']."</td></tr>";
      }
  } else {
    echo "Noch keine Scores vorhanden!";
  }

  echo "</table>";

?>
Ungetestet!

MfG Icy
 
Der aufmerksame Leser wird gesehen haben, dass ich bereits diese Lösung gepostet habe und es dem Threadstarter um ein anderes Problem geht -.-
 
Ja mir geht es um ein anderes Problem. Wenn zum Beispiel Fleyer 50 Mal in der Spalte name gelistet ist tester 10 mal und xyz 27 mal soll die liste so aussehen:
Code:
Name Highscores
Fleyer 50
xyz 27
tester 10
 
PHP:
$sql = "SELECT
			name,
			COUNT(*) AS anzahl
		FROM
			test
		GROUP BY
			name
		ORDER BY
			anzahl DESC
		LIMIT
			10";
$erg = mysql_query($sql) OR die(mysql_error());
while($text = mysql_fetch_assoc($erg)){
	echo $text['name']." = ".$text['anzahl']."<br />\n";
}


/E: Das lässt sich aber bestimmt besser lösen, mit count(name) oder so ähnlich :o
 
Zuletzt bearbeitet von einem Moderator:
/E: Das lässt sich aber bestimmt besser lösen, mit count(name) oder so ähnlich :o

Jop ^^

Code:
SELECT
    `name`,
    COUNT(`name`) AS `anzahl`
FROM
    `test`
GROUP BY
    `name`
ORDER BY
    `anzahl` DESC
LIMIT
    10
oder wenn du auch gleich noch wissen willst, wie viele Spieler es gibt ^^

Code:
SELECT
    `name`,
    COUNT(`name`) AS `anzahl`,
    COUNT(distinct(`name`)) AS `player`
FROM
    `test`
GROUP BY
    `name`
ORDER BY
    `anzahl` DESC
LIMIT
    10
 
Ist deine Lösung Ressourcenschonender?

Ich dachte dabei eigentlich eher daran, dass man das GROUP BY weglässt ^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben