Tabellenabfrage Rangliste

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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]

    Comment


    • #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

      Comment


      • #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]

        Comment


        • #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

          Comment

          Working...
          X