Sven4972
02-03-2010, 15:09
Hallo,
ich habe folgende Tabelle:
http://www.skatonline.de/img/ahnen.jpg
Jetzt möchte ich eine Rangliste erstelle, wo es für die erreichten Plätze Punkte gibt und das dann in einer Tabelle ausgeben.
Für Platz 1 soll es 5 Punkte, Platz 2 3 Punkte und Platz 3 1 Punkt geben.
Wie kann ich das realisieren?
LG Sven
AmicaNoctis
02-03-2010, 15:23
Hallo,
MySQL kann bei der Abfrage auch rechnen, du musst nur mathematisch definieren können, welcher Rang wieviele Punkte bekommt und schreibst diesen Ausdruck einfach mit in die Spaltenreferenzen (das ist der Teil zwischen "SELECT" und "FROM").
Gruß,
Amica
Sven4972
02-03-2010, 16:25
Hallo,
das habe ich bis jetzt:
$abfrage = "SELECT nick, CASE WHEN platz = 1 THEN 5
WHEN platz = 2 THEN 3
ELSE 1 END AS punkte
FROM turnier GROUP BY nick ORDER BY punkte DESC";
$ergebnis = mysql_query($abfrage);
$platz = 0;
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='style2' style='width: 80px height: 30px;'>";
echo $platz = $platz + 1;
echo "</td><td class='style2' style='width: 270px height: 30px;'>";
echo $row ->nick;
echo "</td><td class='style2' style='width: 80px' height: 30px;>";
echo $row ->punkte;
echo "</td>";
echo "</tr>";
}
Jetzt zeigt er aber nur immer ein Ergebnis pro Nick an und vergibt die Punkte.
Wie bekomme ich es jetzt hin, das er die Punkte für die Nicks zusammenrechnet?
LG Sven
AmicaNoctis
02-03-2010, 16:28
:rtfm: Mit GROUP BY und den Aggregatfunktionen (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html).
Sven4972
02-03-2010, 16:40
Hallo,
danke für deine Hinweise, jetzt hab ich es.
$abfrage = "SELECT nick, SUM(CASE WHEN platz = 1 THEN 5
WHEN platz = 2 THEN 3
ELSE 1 END) AS punkte
FROM turnier GROUP BY nick ORDER BY punkte DESC, nick ASC";
$ergebnis = mysql_query($abfrage);
$platz = 0;
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='style2' style='width: 80px height: 30px;'>";
echo $platz = $platz + 1;
echo "</td><td class='style2' style='width: 270px height: 30px;'>";
echo $row ->nick;
echo "</td><td class='style2' style='width: 80px' height: 30px;>";
echo $row ->punkte;
echo "</td>";
echo "</tr>";
}
LG Sven