Tabellenabfrage Rangliste

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

  • Tabellenabfrage Rangliste

    Hallo,

    ich habe folgende Tabelle:



    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

  • #2
    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
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo,

      das habe ich bis jetzt:

      PHP-Code:
      $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

      Kommentar


      • #4
        Mit GROUP BY und den Aggregatfunktionen.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Hallo,

          danke für deine Hinweise, jetzt hab ich es.

          PHP-Code:
          $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

          Kommentar

          Lädt...
          X