ORDER BY score en dan één positie pakken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim van Norde

Tim van Norde

13/04/2012 00:06:01
Quote Anchor link
Hallo,

Ik heb een tabel waarin speler id's en scores in staan. Nu kan ik een mooi scorebord maken. (http://vannorde.com/pokerboards.php).

Ik heb een video poker spel gemaakt, en je score wordt opgeslagen in die tabel. Nu wil ik in-game laten zien op welke positie de speler momenteel staat. Ik kan nu wel een query uitvoeren om ALLE records uit de tabel te halen, en dan zo te kijken op welke positie de speler staat. Maar ik vroeg mij af of dit mogelijk is binnen mysql zelf.

Zoiets als:

'SELECT * FROM account ORDER BY score DESC ->select daarna het speler id en geef terug op welke row die dan komt te staan'

Bij voorbaat dank,

Tim
 
PHP hulp

PHP hulp

22/12/2024 13:26:05
 
B a s
Beheerder

B a s

13/04/2012 00:43:46
Quote Anchor link
Je kunt ook doen ORDER BY MAX(score) LIMIT 0,10 om de hoogste 10 scores op te halen en om vervolgens de namen van de spelers op te halen aan de hand van je speler id's.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/04/2012 09:47:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT ranking
FROM
(SELECT player_id, @rank + 1 AS ranking FROM scores, @rank:=0
ORDER BY score DESC) AS aka
WHERE player_id = 5
 
Tim van Norde

Tim van Norde

13/04/2012 11:58:14
Quote Anchor link
@Bas; dat is niet mijn bedoeling.

@Ger; Ik heb alleen het id en de score in de tabel staan.
 
Erwin H

Erwin H

13/04/2012 12:20:22
Quote Anchor link
Dan werkt die query van Ger dus....
Ranking wordt on the fly aangemaakt in de query.
 
Tim van Norde

Tim van Norde

13/04/2012 12:35:38
Quote Anchor link
Toch lijkt het niet te werken, ik krijg een error.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT ranking
    FROM
    (SELECT user_id, @rank + 1 AS ranking FROM credits, @rank:=0
    ORDER BY value DESC) AS aka
    WHERE user_id = $id"

Tabelnaam: credits
Veldnamen: user_id, value
 
Erwin H

Erwin H

13/04/2012 13:12:24
Quote Anchor link
Kom op, even je brein weer aan zetten. Je moet natuurlijk wel zorgen dat je je eigen tabelnaam en kolomnamen erin zet. DAT kan je toch wel bedenken....
 
Tim van Norde

Tim van Norde

13/04/2012 14:38:00
Quote Anchor link
Die staan er ook in Erwin.

Misschien meer uitleg bij wat er precies gebeurd met deze query, want ik kom er niet echt uit.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/04/2012 14:54:53
Quote Anchor link
Sorry, foutje in de query het moet zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT aka.ranking
    FROM
    (SELECT user_id, @rank := @rank + 1 AS ranking FROM credits, @rank:=0
    ORDER BY value DESC) AS aka
    WHERE aka.user_id = $id"
 
Tim van Norde

Tim van Norde

13/04/2012 16:46:29
Quote Anchor link
Nee, ik krijg helaas nog steeds een error :/
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@rank:=0 ORDER BY value DESC) AS aka WHERE aka.user_id = '1'' at line 3
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/04/2012 17:50:38
Quote Anchor link
Het moet zijn (SELECT @rank := 0) of het gewoon weglaten en een
SET @rank := 0 naar de dbserver sturen voordat je de querie uitvoert (betere methode)
Een alternatief zonder user vars
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT aka.ranking
FROM
    (SELECT user_id, value,
           FIND_IN_SET(
               value
            ,  (SELECT  GROUP_CONCAT(
                            value
                            ORDER BY value DESC
                        )
                FROM    credits)
            ) AS ranking
    FROM  scores) AS aka
WHERE user_id = 5

Dit is beter want als nu twee users hetzelfde aantal credits hebben komen ze op de zelde ranking
Gewijzigd op 13/04/2012 17:52:10 door Ger van Steenderen
 
Tim van Norde

Tim van Norde

13/04/2012 18:16:01
Quote Anchor link
Top! Dit werkt :)
Hartstikke bedankt Ger!
 



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.