Rang in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leendert

leendert

11/10/2007 21:41:00
Quote Anchor link
Hallo allemaal,

Ik werk met een puntensysteem, nu wil ik in het profiel van elk lid de plaats op de ranglijst laten zien.

Dit is zeg maar de tabel:
- id
- naam
- punten

Het moet dus gesorteerd worden op punten, wie de meeste punten heeft is eerste.

Hoe reken ik eenvoudig uit op welke rang iemand staan om dit vervolgens in zijn profiel te tonen?

Mijn kennis is echt nog niet voldoende om dit voor elkaar te krijgen.
 
PHP hulp

PHP hulp

21/11/2024 13:35:31
 
Robert Deiman

Robert Deiman

11/10/2007 22:49:00
Quote Anchor link
Heb je beschiking over MySQL5? (of PostgreSQL)

Dan kan je met een subquery werken bijvoorbeeld:

SELECT COUNT(profiel.id)+1 AS positie FROM profiel WHERE profiel.punten > (SELECT profiel.punten FROM profiel WHERE id=[ingelogde_id])

Zo telt die alle mensen die Meer punten hebben dan de opgevraagde gebruiker.
 
Leendert

leendert

11/10/2007 22:55:00
Quote Anchor link
In ieder geval bedankt maar ik heb mysql 4.3 :s
 
Leendert

leendert

12/10/2007 15:04:00
Quote Anchor link
Maar in MYSLQ 4, hoe kan het daar dan? Met een hele andere manier?
 
Jacco Engel

Jacco Engel

12/10/2007 15:09:00
Quote Anchor link
Denk eerlijk gezegt dat de query van Robbert in 4 ook gewoon werkt. Maar waarom probeer je het niet gewoon in je phpmyadmin. Je krijgt vanzelf een meldig dat het niet klopt en van een select query kan je DB ook niet stuk gaan (denk ik :P)
 
Aron K

Aron K

12/10/2007 16:34:00
Quote Anchor link
Houdt rang in: 1e, 2e, 3e ect.?
of: newbie, exprert, master ect.?
 
Leendert

leendert

12/10/2007 16:57:00
Quote Anchor link
Aron schreef op 12.10.2007 16:34:
Houdt rang in: 1e, 2e, 3e ect.?
of: newbie, exprert, master ect.?


1e, 2e, 3e
 
Aron K

Aron K

12/10/2007 16:58:00
Quote Anchor link
Dan moet je die query van Robert hebben.
 
Leendert

leendert

13/10/2007 10:52:00
Quote Anchor link
Hmm ik snap die query niet echt.

SELECT COUNT(profiel.id)+1 AS positie FROM profiel WHERE profiel.punten > (SELECT profiel.punten FROM profiel WHERE id=[ingelogde_id])

Ik heb een tabel "leden", en voor het berekenen van de rang heb ik toch alleen het veld "lid_id" en "punten" nodig?

Waar staat het woordje "positie" voor in deze query?

edit: ik ben er uit:
$sql2="SELECT COUNT(id)+1 AS positie FROM leden WHERE punten > (SELECT punten FROM leden WHERE id='".$speler."')";
Zo werkt de query bij mij :)
Gewijzigd op 01/01/1970 01:00:00 door leendert
 
Terence Hersbach

Terence Hersbach

13/10/2007 11:26:00
Quote Anchor link
vergeet niet speler te beveiligen met mysql_real_escape_string ;)
 
Frank -

Frank -

13/10/2007 12:41:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    lid1.naam,
    lid1.punten,
    COUNT(lid2.punten) AS ranking
FROM
    leden AS lid1,
    leden AS lid2
WHERE
    lid1.punten <= lid2.punten
OR (
        lid1.punten = lid2.punten
    AND
        lid1.naam = lid2.naam
    )
GROUP BY
    lid1.naam,
    lid1.punten
ORDER BY
    lid1.punten DESC,
    lid1.naam DESC

Getest en goedgekeurd.
 
Leendert

leendert

13/10/2007 15:11:00
Quote Anchor link
Jongens dit gaat even boven mijn pet;)

Wat bedoel je Terence?

En wat doet dat script van jou precies pgFrank? Waar is dat "GROUP BY" en "ORDER BY" voor?
 
Frank -

Frank -

13/10/2007 15:28:00
Quote Anchor link
Heb je de query al eens uitgevoerd? Dan zie je in elk geval wat het resultaat is.

Cursus SQL, welliswaar met Access, maar het is wel in het nederlands geschreven.
 
Leendert

leendert

13/10/2007 16:02:00
Quote Anchor link
Ja maar ik snap niet wat het toevoegd (beter dan) aan deze query:

SELECT COUNT(profiel.id)+1 AS positie FROM profiel WHERE profiel.punten > (SELECT profiel.punten FROM profiel WHERE id=[ingelogde_id])

Ook snap ik niet waarom er 2 verschillende leden (lid1 en lid2) in die query van jou zitten.

Bedankt voor die link, de basis van sql snap ik al wel, maar als het wat ingewikkelder word niet meer ;)
 
Frank -

Frank -

13/10/2007 16:15:00
Quote Anchor link
lid1 en lid2 zijn geen leden, maar aliasen van tabellen. Om precies te zijn, verschillende aliasen van dezélfde tabel, namelijk de tabel 'leden'.

De query maakt een lijst aan met alle leden en hun ranking. Zie de resultaten.
 
Leendert

leendert

13/10/2007 16:33:00
Quote Anchor link
Owja, nu werkt het, bedank!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.