2 Spalten addieren, Sortieren und Position ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 2 Spalten addieren, Sortieren und Position ausgeben

    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:
    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($punkteSORT_DESCSORT_NUMERIC,$tipperSORT_ASCSORT_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++;

    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
    andreas.mkq.de

  • #2
    Re: 2 Spalten addieren, Sortieren und Position ausgeben

    Original geschrieben von el muesli
    ich habe eine tabelle, in der es die spalten spielerid,spieltag_1,...,spieltag_n,gesamt gibt
    Da liegt schon der Fehler.

    Informiere dich über Normalisierung.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: 2 Spalten addieren, Sortieren und Position ausgeben

      Original geschrieben von el muesli
      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.
      Die "Methode" die du suchst, ist - ...
      SELECT 5-3 AS die_errechnete_Spalte;

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Danke erstmal für die flotten Antworten. Dass die Tabelle für diesen Zweck nicht unbedingt ideal konzipiert ist gebe ich zu, aber bisher ging alles recht gut damit. Ich habe jetzt schonmal dank ghostgamblers tipp eine deutliche Vereinfachung erreicht:
        PHP-Code:
        $tabelle=mysql_query("SELECT tipperid, gesamt-spieltag_$letzterspieltag AS lastgesamt
                                FROM punkte0607 ORDER BY lastgesamt DESC"
        ); 
        Die Position bestimme ich weiterhin mit meiner kleinen Schleife. Noch nicht perfekt aber für meine Bedürfnisse zufriedenstellend, die Performance ist auch schon merklich besser.
        andreas.mkq.de

        Kommentar

        Lädt...
        X