Topjunge: 50 größte Werte aus Tabellen auslesen und ausgeben

Halalilalo!

1. Ich habe eine Tabelle mit der Spalte "Punkte" vom Typ INT und eine Spalte "Name" von Typ VARCHAR.
Wie kann ich die Namen von den 50 höchsten Werten in "Punkte" ausgeben?

2. Ich habe 5 Tabellen und jeweils wieder mit der Spalte "Punkte" vom Typ INT und eine Spalte "Name" von Typ VARCHAR.
Wie kann ich die Namen von den 50 höchsten Werten in "Punkte" aller Tabellen insgesamt zusammen ausgeben?

Cucu

THX schonmal im Vorraus an alle.

Da TopjunGÖ

  1. Ich grüsse den Cosmos,

    1. Ich habe eine Tabelle mit der Spalte "Punkte" vom Typ INT und eine Spalte "Name" von Typ VARCHAR.
      Wie kann ich die Namen von den 50 höchsten Werten in "Punkte" ausgeben?

    ORDER und LIMIT sind deine Freunde. Einfach nach "Punkte" sortieren und die 50 ersten Datensätze ausgeben.

    1. Ich habe 5 Tabellen und jeweils wieder mit der Spalte "Punkte" vom Typ INT und eine Spalte "Name" von Typ VARCHAR.
      Wie kann ich die Namen von den 50 höchsten Werten in "Punkte" aller Tabellen insgesamt zusammen ausgeben?

    Gleiches wie oben, allerdings sollte dir da ein zusätzliches JOIN weiterhelfen.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
  2. Abend!
    indem du
    SELECT 'namen' , 'punkte' FROM 'punktetabelle' ORDER BY "Punkte" DESC LIMIT 0,50"
    verwendest

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    1. Abend!
      indem du
      SELECT 'namen' , 'punkte' FROM 'punktetabelle' ORDER BY "Punkte" DESC LIMIT 0,50"
      verwendest

      Und wie geb ich das dann aus? =)Danke schonmal!
      bye

      da TopjungÖ

      1. Tutorial
        MFG
        bleicher

        --
        __________________________-
        Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
      2. Ist ja unter (PHP) eingestellt, also:

        SELECT 'namen' , 'punkte' FROM 'punktetabelle' ORDER BY "Punkte" DESC LIMIT 0,50"
        verwendest

        Und wie geb ich das dann aus? =)Danke schonmal!

          
        //Die besten 50 aus Tabelle1 auslesen  
        $sql = 'SELECT \'namen\' , \'punkte\' FROM \'punktetabelle1\' ORDER BY "Punkte" DESC LIMIT 0,50 ; ';  
        $result = mysql_query($sql);  
        $lufmit = 0;  
        while ($row = mysql_fetch_object) {  
         $Punkte[$laufmit]['Punkte'] = $row->punkte;  
         $Punkte[$laufmit]['Name'] = $row->namen;  
         $laufmit++;  
        }  
        //Die besten 50 aus Tabelle 2 auslesen  
        $sql = 'SELECT \'namen\' , \'punkte\' FROM \'punktetabelle2\' ORDER BY "Punkte" DESC LIMIT 0,50 ; ';  
        $result = mysql_query($sql);  
        while ($row = mysql_fetch_object) {  
         $Punkte[$laufmit]['Punkte'] = $row->punkte;  
         $Punkte[$laufmit]['Name'] = $row->namen;  
         $laufmit++;  
        }  
        //Das Selbe nochmal mit Tabelle 3-5  
        // (...)  
        rsort($Punkte);  
        //Jetzt stehen bis zu 250 vom Größten zum  
        //Gleinsten geordnete Punkt/Name-Kombinationen  
        //im Array $Punkte  
          
        //Und die Ausgabe:  
        for ($i = 0; $i <= 49; $i++) {  
         echo ($Punkte[$i]['Name'].' - '.$Punkte[$i]['Punkte')."\n");  
        }  
        
        

        Man kann Tabelle 1-5 natürlich auch als Schleife auslesen, wenn man ihre Namen so ansprechen kann (wenn sie z.B. "Punktetabelle".$i heißen)

        1. echo $begrüßung;

          //Die besten 50 aus Tabelle1 auslesen
          $sql = 'SELECT 'namen' , 'punkte' FROM 'punktetabelle1' ORDER BY "Punkte" DESC LIMIT 0,50 ; ';

          Einfache Anführungszeichen machen aus den darin eingeschlossenen Zeichen Strings. Strings sind aber keine Platzhalter für Bezeichner. Während das SELECT ständig nur die Strings "namen" und "punkte" ausgäbe, ergibt ein String in der FROM-Klausel einen Syntaxfehler. Auch doppelte Anführungszeichen, wie in der ORDER BY-Klausel, machen es nicht besser. Da "Punkte" immer gleich "Punkte" ist, findet hier keine Sortierung statt.

          $result = mysql_query($sql);
          $lufmit = 0;
          while ($row = mysql_fetch_object) {

          Was macht das Script im Fehlerfall? Augen zu und durch ...
          Was ist mit $Punkte, wenn es keine Datensätze gibt? Uninitialisiert.

          rsort($Punkte);

          Uninitialisierte Variablen liefern null und das ist kein gültiges Argument für rsort().

          echo "$verabschiedung $name";

  3. Hallo.
    Ich habe eine Tabelle mit den Spalten user,gehalt.
    Es sollen die 50 user mit dem höchsten gehalt aus der Tabelle angezeigt werden.

    Skript:

    laufmit=0;
    $table='Tabelle';
    $sql="SELECT user,gehalt FROM $table ORDER BY gehalt DESC  LIMIT 0,$anz ; ";
    $result=mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($result)) {
        while ($row = mysql_fetch_assoc($result)) {
            $Punkte[$laufmit]['gehalt'] = $row->gehalt;
     $Punkte[$laufmit]['user'] = $row->user;
     ++$laufmit;
        }
    }

    Ausgabeskript:

    for($i=1;$i<=$anz;++$i) {
        echo $Punkte[$i]['user']." - ".$Punkte[$i]['gehalt']."\n";
    }

    Es will einfach nicht klappen. MySQL Verbindung und Datenbank ausgewählt ist alles richtig weil die andern Skripte auch klappen. Ich habs hier draußen gelassen.

    Heidiiiis.

    TopjungÖ

    1. Hallo,

      laufmit=0;

      Das ist kein PHP.

      $table='Tabelle';
      $sql="SELECT user,gehalt FROM $table ORDER BY gehalt DESC  LIMIT 0,$anz ; ";

      Steht in $sql jetzt das drin was du erwartest?

      $result=mysql_query($sql) or die(mysql_error());

      Fehlermeldung?

      while ($row = mysql_fetch_assoc($result)) {
              $Punkte[$laufmit]['gehalt'] = $row->gehalt;

      Du verwendest mysql_fetch_assoc(), willst aber dann auf die Daten so zugreifen als hättest du mysql_fetch_object() verwendet - versuch mal statt $row->gehalt $row['gehalt'] zu schreiben (analog mit $row->user genauso)

      Es will einfach nicht klappen.

      definiere "klappt nicht".

      Grüße aus Nürnberg
      Tobias

      --
      TOP7: Gründe, seinen Urlaub im Weltraum zu verbringen - oder doch besser nicht?
      Selfcode: sh:( fo:) ch:? rl:| br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:) ls:[ js:|
      1. Hi.

        laufmit=0;
        Das ist kein PHP.

        Das $ steht davor, sry.

        $table='Tabelle';
        $sql="SELECT user,gehalt FROM $table ORDER BY gehalt DESC  LIMIT 0,$anz ; ";
        Steht in $sql jetzt das drin was du erwartest?

        Ehm hoffe ich. Hab leider kaum Ahnung davon.

        Fehlermeldung?

        Nein da kommt keine.

        Du verwendest mysql_fetch_assoc(), willst aber dann auf die Daten so zugreifen als hättest du mysql_fetch_object() verwendet - versuch mal statt $row->gehalt $row['gehalt'] zu schreiben (analog mit $row->user genauso)

        Es will einfach nicht klappen.
        definiere "klappt nicht".

        Er gibt die - aus aber keinen Namen und kein Gehalt davor/danach.
        mfg

        Topjunge

        1. Hallo,

          Ehm hoffe ich. Hab leider kaum Ahnung davon.

          ein echo $sql; zum Überprüfen der Ausgabe bekommst du aber schon noch hin, oder?

          Er gibt die - aus aber keinen Namen und kein Gehalt davor/danach.

          Das dürfe an dem von mir angesprochenen (und von dir zitierten!) Problem mit dem $row->gehalt vs. $row['gehalt'] liegen - wenn du error_reporting auf E_ALL setzen würdest, würde dir PHP vermutlich einige Notices um die Ohren werfen ...

          Grüße aus Nürnberg
          Tobias

          1. Hey

            DANKE!!!!!!!! Es lag echt an $row->gehalt vs. $row['gehalt']!

            Super echt GEIL danke ^^..

            mfg

            TopjungÖ