Hi, der Titel könnte schon fast als Problembeschreibung ausreichen, aber hier nochmal genauer: ich habe eine tabelle, in der es die spalten spielerid,spieltag_1,...,spieltag_n,gesamt gibt, wobei in gesamt eigentlich nur die summe der ganzen zeile steht. es geht um ein tippspiel, da gibts an jedem spieltag punkte usw.
nun möchte ich die gesamtposition des spielers am vorherigen spieltag ermitteln, meine idee:
1. gesamt-spieltag_n ermitteln
2. das dann absteigend sortieren
3. und dann die position des spielers mit einer bestimmten tipperid ermitteln.
bisher hab ich das ziemlich kompliziert mit php gemacht:
Die Frage ist, ob es da nicht eine elegantere Methode direkt in SQL gibt. Ich finde irgendwie aber nicht, wie ich 2 Spalten subtrahieren kann. Ich könnte mir auch vorstellen, dass es für die Position nach der Sortierung da "Befehle" gibt.
Ich würde mich sehr über Anregungen freuen, weil der Server mit der aktuellen Lösung arg zu kämpen hat .
Beste Grüße, Andreas
nun möchte ich die gesamtposition des spielers am vorherigen spieltag ermitteln, meine idee:
1. gesamt-spieltag_n ermitteln
2. das dann absteigend sortieren
3. und dann die position des spielers mit einer bestimmten tipperid ermitteln.
bisher hab ich das ziemlich kompliziert mit php gemacht:
PHP-Code:
$tabelle=mysql_query("SELECT tipperid, gesamt, spieltag_$letzterspieltag FROM punkte0607");
// Arrays mit tipperid und den punkten werden erstellt
$punkte=array();
$tipper=array();
for($i=0;$i<$anzahl_tipper;$i++){
list($tipper[$i],$gesamt,$tag)
$punkte[$i]=$gesamt-$tag;
}
// absteigende Sortierung beider Arrays nach Punkten
array_multisort($punkte, SORT_DESC, SORT_NUMERIC,$tipper, SORT_ASC, SORT_NUMERIC);
// Position ermitteln
$previous=1000000;
$pos=1;
$j=0;
for($i=0;$i<$anzahl_tipper;$i++){
if($punkte[$i]<$previous){
$previous=$punkte[$i];
$pos+=$j;
$j=0;
}
if($tipper[$i]==$tipperid){
return $pos;
exit();
}
$j++;
}
Ich würde mich sehr über Anregungen freuen, weil der Server mit der aktuellen Lösung arg zu kämpen hat .
Beste Grüße, Andreas
Kommentar