Ankündigung

Einklappen
Keine Ankündigung bisher.

nach mehrere Datenbank spalten sortieren

Einklappen

Neue Werbung 2019

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

  • nach mehrere Datenbank spalten sortieren

    Hi,
    Also habe eine Datenbank tabelle fp: wo flirtprofile von benutzer gespeichert sind wie z.B. augenfarbe, haarfarbe größe usw.
    Auch können benutzer bilderhochladen und ander Benutzer können die Bilder bewerten. jeder benutzer kann 3 Bilder hochladen.

    Also, habe 3 Datenbank spalten d1,d2,d3 wo Durchschnitte von Bilderbewertungen gespeichert sind.
    d1 ist der durchschnitt vom foto1,d2 von foto2, d3 von foto3.

    natürlich gibt es auch noch die spalten foto1,foto2,foto3 wo die Bildurl gespeichert werden.

    Nun möchte ich ein Ranking über die Bilder erstellen:
    z.B. Um Platz 1 zu bekommen:
    dazu müsste ich den höchsten durchschnittswert aus d1,d2,d3 suchen.
    Nur wie mach ich das? also den sql befehl.

    Bis hier ist der HTML Code mir fehlt aber noch wie schon gesagt der richtige sql code

    PHP-Code:
     <table border="0" width="328" height="19" cellspacing="0" cellpadding="0">
          <?php
    $sql 
    "SELECT benutzername,foto1,foto2,foto3 FROM fp Where d1<>0 or d2<>0 or d3<>0 order by d1,d2,d3";

    $res mysql_query($sql) or die("Fehler ".mysql_error());
    $i=1;
    while( 
    $yn mysql_fetch_object($res) )
    {
     
    ?>

        <tr>
          <td width="328" height="8">
            <p align="center">[b]<font size="3" face="Arial">Platz <?php echo $i?></font>[/b]</td>
        </tr>
        <tr>
          <td width="328" height="5"><font face="Arial"></font></td>
        </tr>
        <tr>
          <td width="328" height="19">
            <p align="center"><font face="Arial">[img][/img]</font></td>
        </tr>
        <tr>
          <td width="328" height="19">
            <p align="center"><font face="Arial">benutzername</font></td>
        </tr>
    <?php $i++;
    ?>

      </table>


  • #2
    Am einfachsten mit einer zusätzlichen "Aggregate-Funktion" als Gesamtdurchschnitt der anderen 3 Durchschnitte. Dann kannst du danach sortieren.
    PHP-Code:
    <?php
    $sql 
    "SELECT benutzername,foto1,foto2,foto3, (d1+d2+d3)/3 AS avg 
               FROM fp 
               WHERE d1<>0 OR d2<>0 OR d3<>0
               ORDER BY avg"
    ;
    ?>

    Kommentar


    • #3
      ja ... wäre eine möglichkeit ... aber gibt es nicht eine andere möglichkeit
      aber wenn ein user nicht 3 bilder sondern nur 2 bilder hat?

      Kommentar


      • #4
        Sicher... viele Wege führen nach Rom.

        Was gefällt dir an der Variante nicht, oder besser: Was hättest du gern anders?

        P.S. Oh... hab grad deinen 2. Satz bemerkt... mal nachdenken...

        Kommentar


        • #5
          ja aber ich könnte wenn ich den durchschnitt ausrechne einen gesammt durchschnitt ausrechnen und in eine eigene spalte speichern ...

          Aber am liebsten wäre mir wenn man jedes einzelne Bild und nicht den gesammten user durchschnittranking hätte

          Kommentar


          • #6
            wenn es aber nicht anders geht, mach ich schon das so wie dus vorgeschlagen hast ...

            Kommentar


            • #7
              es geht noch anders:
              einfach nicht fest durch 3 teilen, sondern nur durch die anzahl der felder, die >0 sind.
              PHP-Code:
              <?php
              $sql 
              "SELECT benutzername,foto1,foto2,foto3, (d1+d2+d3)/(if(d1>0,1,0)+if(d2>0,1,0)+if(d3>0,1,0)) AS avg  
                         FROM fp  
                         WHERE d1<>0 OR d2<>0 OR d3<>0 
                         ORDER BY avg"

              ?>
              Das geht sicherlich noch einfacher, aber ich hab grad nicht alle Mathe-Funktionen von mysql im Kopf.

              Kommentar

              Lädt...
              X