Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[Mysql/PHP] Ranking ermitteln

Diskussion: [Mysql/PHP] Ranking ermitteln im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo ! Ich habe eine Datenbank mit ca. 450.000 Datensätzen. Es handelt sich um Anwender und ein Feld in ...

Antwort
Alt 07.10.11, 16:09   #1 (permalink)
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard [Mysql/PHP] Ranking ermitteln

Anzeige

Hallo !

Ich habe eine Datenbank mit ca. 450.000 Datensätzen. Es handelt sich um Anwender und ein Feld in der Datenbank beschreibt das Guthaben. Ich möchte nun ein Ranking erstellen. Top 20 und die Position vom aktuellen User.

Beispiel :

Top 20 ( Deine Position 321.299 )

Ich überlege nun, wie ich die eigene Position bestimmten kann. Am einfachsten wäre es alle 450.000 auszulesen und zu sortieren und dann müsste man diese mit einer Schleife durchlaufen. Alternativen wären ja Sachen wie Quicksort oder MergeSort. Kennt eine eine Lösung die eventuell auf DB - Ebene funktioniert ?

Dawen ist offline   Mit Zitat antworten
Alt 07.10.11, 16:26   #2 (permalink)
 
Benutzerbild von she3p
 
Registriert seit: 07.05.07
she3p Leistung: 8086
Likes: 19
Standard

ORDER BY & LIMIT

Code:
SELECT * FROM table ORDER BY gehalt LIMIT 20
__________________
she3p ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 07.10.11, 16:26   #3 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

@she3p: ich glaube der erste Teil ist Dawen auch noch klar... ihm geht's ja ums eigene Ranking - also die Zahl bei "Deine Position"
edit: okay. ich nehm alles zurück - wenn er mit QuickSort und co. anfangen will, ist ihm anscheinend auch ORDER BY unbekannt...

eigenes Guthaben ermitteln:
Code:
SELECT uid, credit FROM user_credits WHERE uid = :myUserId
Und diesen Wert dann in die zweite Query einsetzen, um die Anzahl der Einträge zu zählen, deren Guthaben größer oder gleich ist:
Code:
SELECT COUNT(*) as ranking FROM user_credits WHERE credit >= :myCredit
beavisbee ist offline   Mit Zitat antworten
Alt 07.10.11, 16:31   #4 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Zitat:
@she3p: ich glaube der erste Teil ist Dawen auch noch klar... ihm geht's ja ums eigene Ranking - also die Zahl bei "Deine Position"
Ja - Trotzdem Danke

@beavisbee :

Das teste ich mal. Sollte eigentlich klappen. Ich habe es immer mit Sortieralgorithmen versucht, was den Server aber schnell in die Knie zwingt. Danke !
Dawen ist offline   Mit Zitat antworten
Alt 07.10.11, 16:46   #5 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

Zitat:
Zitat von Dawen Beitrag anzeigen
Ich habe es immer mit Sortieralgorithmen versucht, was den Server aber schnell in die Knie zwingt.
Dein Server tut mir echt leid...
wenn du überlegst, was du da schon allein an RAM belegst, einfach weil du riesige Datenmengen in nem Array hälst, um sie dann umständlich zu sortieren...

schau dir mal die ganzen Aggregat-Funktionen an, die (My)SQL so kann:
MySQL :: MySQL 5.1 Referenzhandbuch :: 12.11.1 Funktionen zur Benutzung in GROUP BY-Klauseln

kannst also nicht nur direkt per SQL die Anzahl bestimmen, sondern auch Summe, Minimum, Maximum, Mittelwert, Varianz und Standard-Abweichung u.s.w. berechnen lassen...
beavisbee ist offline   Mit Zitat antworten
Alt 07.10.11, 17:30   #6 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Zitat:
Zitat von beavisbee Beitrag anzeigen
Dein Server tut mir echt leid...
LOL - Ich gebe es an den Server weiter.

Zitat:
wenn du überlegst, was du da schon allein an RAM belegst, einfach weil du riesige Datenmengen in nem Array hälst, um sie dann umständlich zu sortieren...
Ja klar - Die Web - Applikation ist aber immer mehr gewachsen und jetzt muss halt was an der Perfomance gemacht werden. Ich sitze hier aber mit Fieber und mir ist da spontan nichts eingefallen - Feierabend
Dawen ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [Mysql/PHP] Ranking ermitteln
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Google und sein Ranking ByteSurfer (Web-) Design und webbasierte Sprachen 9 29.06.10 12:51
Funktiondeklarations Ermitteln Schurke Code Kitchen 1 08.11.08 00:12
Shutdownart ermitteln THRALL Code Kitchen 2 21.03.06 18:22
Mac Adr. mittels IP ermitteln in C++ wwipfel Code Kitchen 1 08.12.03 15:35


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61