Ranking (Positie zoeken binnen de resultaten)
Ik ben bezig met een project en ik wil de positie (Ranking) van een speler hebben.
Mijn tabel: spelers_tabel (speler_naam - speler_punten)
Pim = 10
Karel = 5
Tom = 25
Dany = 7
Ik wil de positie van Dany hebben. Het resultaat is: Dany (3), betekent de derde plaats.
Alvast bedankt,
SZ
Gewijzigd op 16/11/2011 20:10:41 door Sara Z
Wat heb je zelf kunnen bedenken.
vervolgens een loopje in php met derde keer = derde speler
Gewijzigd op 16/11/2011 19:27:12 door Jeroen VD
m.a.w. je hoeft de plaatsbepaling niet binnen php uit te vogelen
Wil je even je titel veranderen, verzin een korte zin die het probleem beschrijft.
Noppes Homeland op 16/11/2011 19:08:29:
uiteraard los je dit in het geheel op met 1 sql statement, of in sommige gevallen 2 - mysql -
m.a.w. je hoeft de plaatsbepaling niet binnen php uit te vogelen
m.a.w. je hoeft de plaatsbepaling niet binnen php uit te vogelen
hoe kan je dan de hele tabel die je als resultaat krijgt de derde bepalen in een query?
ORDER BY speler_punten DESC OFFSET 2 LIMIT 1
Ik ben niet opzoek naar de derde, maar naar de positie van Dany.
Hij kan vandaag de derde zijn, maar morgen misschien de 10de.
Ik wil een query die zoekt binnen de resultaten van (SELECT * FROM spelers_tabel ORDER BY speler_punten DESC) naar de positie van de speler Dany.
Alvast bedankt,
SZ
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
SELECT spelers.id,
spelers.speler_naam,
spelers.speler_punten,
@row := (@row + 1) AS rank
FROM spelers,
(
SELECT @row := 0
) AS counter
ORDER BY spelers.speler_punten DESC
spelers.speler_naam,
spelers.speler_punten,
@row := (@row + 1) AS rank
FROM spelers,
(
SELECT @row := 0
) AS counter
ORDER BY spelers.speler_punten DESC
resultaat:
Gewijzigd op 17/11/2011 00:24:48 door Bart V B
Ik ben een tijdje weggeweest. Ik zal hem straks testen.
Groetjes,
SZ
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
COUNT(id)
FROM
spelers
WHERE
speler_punten >
(
SELECT
speler_punten
FROM
spelers
WHERE
id=ID VAN DANNY
)
COUNT(id)
FROM
spelers
WHERE
speler_punten >
(
SELECT
speler_punten
FROM
spelers
WHERE
id=ID VAN DANNY
)
Hier moet volgens mij een +1 bij op, maar dat moet je maar even bekijken.
Gewijzigd op 26/11/2011 11:54:01 door Jacco Brandt
Ik test hem zometeen.
Ik heb nog een moeilijke vraag:
Stel voor dat de punten niet is de database staan.
De punten worden apart (Buiten de database) berekend.
Ik denk nu aan (temporary table), maar ik weet niet hoe.
Dus de query gaat zoeken in het tijdelijk tabel (Waar de leden en de punten staan) naar de positie van DANNY.
Wat zijn de mogelijkheden?
Alvast bedankt,
SZ
Als de punten buiten de database worden berekend, dan kun je daar toch gelijk de positie bij berekenen?
S Z op 26/11/2011 12:21:28:
Ik heb nog een moeilijke vraag:
Stel voor dat de punten niet is de database staan.
De punten worden apart (Buiten de database) berekend.
Stel voor dat de punten niet is de database staan.
De punten worden apart (Buiten de database) berekend.
Aan de hand waarvan worden de punten berekend, is het niet handiger om een kolom punten aan de spelers tabel toe te voegen?
Bijvoorbeeld:
DANNY heeft 7 (5 voor Voetbal en 2 voor basketbal)
Voetbal en Basketbal zijn van het tabel (Activiteiten).
Dus als de punt van (Danny voetbal) is veranderd, dan worden zijn punten autamatisch gewijzigd.
Dus een andere kolom is geen optie op dit moment.
Gewijzigd op 26/11/2011 13:43:43 door Sara Z
NB: Ik gebruik JOIN LEFT in plaats van JOIN
Ik zal hem testen.