Ausgabe nach Spaltensumme sortieren

SilentWarrior

Erfahrenes Mitglied
Hallo zusammen

Ich würde auf meiner Website gerne die aktuelle Rangliste der Super League (Schweizer Bundesliga) anzeigen. Dafür habe ich eine Tabelle mit folgenden Spalten:

id
name
gewonnen
unentschieden
verloren
geschossen
erhalten

Jetzt muss die Abfrage logischerweise überprüfen, wieviel mal eine Mannschaft gewonnen hat (3x) und wieviel mal unentschieden gespielt wurde (1x). Diese Summe dient schlussendlich als Rangliste. Nur weiss ich leider nicht, wie die Syntax dafür aussieht bzw. ob das überhaupt mit einer MySQL-Abfrage realisierbar ist und ich damit nicht besser im PHP-Forum aufgehoben wäre. Naja... ich vertraue einfach mal den Profis. ;)

Beste Grüsse

SilentWarrior
 
select *,(sum(gewonnen)*3+sum(unentschieden)) as punkte
from rangliste group by name order by punkte desc

sollte so gehen :)
 
Vielen Dank an euch beide, jetzt funktioniert's perfekt. :)

Vaethischist: Kannst du mir vielleicht noch den Direktlink geben, ich find mich in der Doku irgendwie nicht zurecht. :(
 
Hallo

Ich hab ein neues Problem. Und zwar folgendes: Beim Fussball ist es ja so, zuerst wird nach Punkten gerechnet, dann nach Torverhältnis, dann nach Anzahl geschossener Tore und schlussendlich noch nach der Anzahl Siege bzw. Unentschieden (beim letzten bin ich mir nicht sicher - Fussballexperten, stimmt das?)

Nunja, und da habe ich mir mal eine Abfrage zusammengestellt (basierend auf der alten):
PHP:
$query = mysql_query("SELECT *,(SUM(gewonnen)*3+SUM(unentschieden))
AS punkte, (SUM(tore_geschossen)-SUM(tore_erhalten)) AS torverhaeltnis,
(SUM(tore_geschossen)) AS tore, (SUM(gewonnen)) AS siege FROM fussball GROUP BY
name ORDER BY punkte,torverhaeltnis,tore,siege DESC LIMIT 3");
Nur scheint die dummerweise nicht zu funktionieren bzw. es werden immer nur die letzten drei Mannschaften angezeigt. Dies hier funktioniert merkwürdigerweise aber:
PHP:
$query = mysql_query("SELECT *,(SUM(gewonnen)*3+SUM(unentschieden))
AS punkte, (SUM(tore_geschossen)-SUM(tore_erhalten)) AS torverhaeltnis,
(SUM(tore_geschossen)) AS tore, (SUM(gewonnen)) AS siege FROM fussball GROUP BY
name ORDER BY punkte DESC LIMIT 3");
Woran liegt's denn?
 
War doch schon gut :) die Sortierrichtung muss aber bei jedem Feld angegeben werden.
aus:
ORDER BY punkte,torverhaeltnis,tore,siege DESC LIMIT 3");
wird
ORDER BY punkte desc,torverhaeltnis desc,tore desc,siege DESC LIMIT 3");

:)
 

Neue Beiträge

Zurück