[mysql,php]Rang,Platz ermitteln

Bububoomt

ohne Vertrauen
ID: 10361
L
28 April 2006
19.666
769
Alo einen rang zu ermitteln im grunde kann ich, einfach z.b. die Punkte Zahl on user x auslesen und gucken die anzahl der User die mehr haben.

Aber wie macht man das, wenn die anzahl per Count bereits berechnet wird?

also insgesamte rangfolge:
select count(w) as anzahl from tabellea group by w order by anzahl DESC limit 10

Anzahl bei users x

select count(w) as anzahl from tabellea where user=x group by w

Und wie bekommt man nun die position von dem user? Habe schon einiges versucht, kalppte aber nciht.
 
Wenn ichs richtig verstanden hab, würd ichs an deiner Stelle machen wie in Beispiel1. Das ganze per while-Schleife durchgehen und in der while-Schleife eine Variable hochzählen lassen.
Und dann in der while-Schleife überprüfen ob der aktuelle Durchlauf dem User entspricht, der gemeint ist und die hochzähl-Variable ausgeben.

Es wäre einfacher du würdest einfach posten wie deine Tabelle aussieht und was du genau haben willst. (wies aussehen soll) Dann hätte man dir schnell was basteln können. Vielleicht hilft dir aber meine Idee auch so schon, dass du es selbst hinbekommst.
 
@tobias, klar so könnte ichs machen, aber wenn es Position 10.000 ist, um es überspitzt zu sagen, dann ist es doch recht lange whileshcleife...

@theHacker, das habe ich bisher ncoh nciht gesehen, versteh es auhc nciht wie ichs anwenden muß.

Also tabelle refs
Spalten uid werber

Count(werber) as anzrefs,werber from tabelle refs group by werber order by anzrefs limit 10

so hat man die User (werber) mit ihren Refs.

Count(werber) as anzrefs from tabelle refs where werber=1 group by werber

= >anzahl refs von user 1

wie bekommt man die Position von dem user 1??


P.S. wieso hat mir die Suche hier den Thread nichtausgeworfen?? Dabei habe ich nahc Rang gesucht...
 
Alo einen rang zu ermitteln im grunde kann ich, einfach z.b. die Punkte Zahl on user x auslesen und gucken die anzahl der User die mehr haben.

Aber wie macht man das, wenn die anzahl per Count bereits berechnet wird?


wie wäre es mit folgendes:
select count(w) as anzahl from tabellea group where `punkteanzahl`<$user

damit hast du genau die user die weniger punkte haben als er und dadurch seinen Platz
 
wie wäre es mit folgendes:
select count(w) as anzahl from tabellea group where `punkteanzahl`<$user

damit hast du genau die user die weniger punkte haben als er und dadurch seinen Platz

Das war ein beispiel wie es normal geht und das kann ciha uch.

Aber es geht darum, das es keine Punkteanzahl gibt, sondern die anzahl per Count berechnet wird.

Also in der Tabelle refs wird der userid (uid) und werberid (werber) gespeichert.

Count(werber)... group by werber wird die anzahl der zeilen ja gezählt je werberid!

Also es sit nciht so, das gespeichert ist werberid und die dazugehörige anzal an refs, sonst wäre es ja leicht...

Nun verstanden??

Also

uid werber
1 0
2 1
3 1
4 1
5 2
6 3
7 4
8 5
9 5
10 6

Werber (1) hat 3 Refs, werber (5) hat 2 refs....
 
Ähm nee ist klar, dann habe ich noch immer nicht den Rang, ich habe bereits die anzahl der Refs von den ersten 10 Plätzen und die Refs von user x.

ich will aber den Rang von user x nicht die anzahl seiner refs!! Ist das so unverständlich was ich will??
 
öhm, ich würde mal ja sagen ^^
wenn du die ersten 10 ergebnisse ausliest, diese mit oder by sortieren lässt, dann hast du doch den rang :roll: