Welche Position in der Tabelle?

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

  • Welche Position in der Tabelle?

    Hallo

    Zuerst: Ich habe gesucht, aber nichts gefunden.

    Mein Problem: Ich habe eine Tabelle mit 40000 Einträgen (Zeilen). In diesem Fall geht es um die beiden Spalten username und points. Ich möchte die Tabelle jetzt nach Punkten umgekehrt sortieren (ORDER BY points DESC) und dann nachschauen, an welcher Stelle ein bestimmter username steht.
    Ist es nicht uneffizient, mit einer Schleife auszuzählen, wann der username aufgeführt ist? Da muss es doch auch eine bessere Methode geben.

    mfg
    Christian

  • #2
    Bei Oracle gibt's dafür das pseudo-Attribut ROWNUM ... bei MySQL wird man im Regen stehen gelassen ... trotz mehrfacher Nachfrage meinerseits ...

    Ich habe mir da mal für ein Toplisten-System 'ne UDF-Funktion geschrieben ... allerdings kann man sowas nicht bei jedem Provider ...
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      das geht doch?

      mal von einer Seite andenken !

      ermittle wieviel points er hat, und
      zähle die, welche mehr haben


      points ermittlen:

      select points from Tabellenname where username like 'deinName';

      dann zählen:

      select count(*) from Tabellenname where points>$erstesErgebniss;
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        oder .....
        nur so als idee

        eine temporaere tabelle in sql erstellen und dann einen counter dazu fuegen. in postgres geht das so, mysql weiss ich nicht so genau:
        tmp_tab :
        position,points,username

        insert into tmp_tab select points, username from liste order by points;

        update tmp_tab set position=AUTO_INCREMENT();
        (in postgres gibt es dafuer eine sequence)
        also etweder funktion schreiben oder einen counter selber basteln.

        gruss von pau

        Kommentar

        Lädt...
        X