2017-04-09 6 views
0

Ich weiß, dass dies etwas abgedeckt wurde, aber es hat nicht meine Situation geholfen, eher gab es Diskrepanzen im Rang. Sie fragen sich, ob jemand helfen könnte!MySQL-Rang, Kann es nicht richtig funktionieren

Also ich ein Spiel haben, sind die Datenbanktabellen: Benutzer, Karten, Spitznamen, user_game_scores

Im ein Leaderboard zu entwickeln und leicht in der Lage, die Informationen nach Punkten geordnet zu erhalten. Fantastisch.

Aber ich möchte dies so einstufen, dass ich eine spezifische Benutzerpunktzahlen ziehen kann und der Rang für alle Punkte relevant ist. zB:

GLOBAL PARTITUREN

user info - Score - (rank)1 
user info - Score - (rank)2 
user info - Score - (rank)3 
etc. 

Während USER PARTITUREN sind eher sein:

user info - Score - (rank)82 
user info - Score - (rank)94 
user info - Score - (rank)115 
etc. 

ich die Implementierung vorstellen, dies zu sein:

SELECT users.first_name, users.surname, player_nicknames.nickname, maps.map_name, user_game_scores.score, 
FIND_IN_SET(score, (SELECT GROUP_CONCAT(score ORDER BY score DESC) FROM user_game_scores)) AS rank 
FROM `user_game_scores` 
INNER JOIN users ON user_game_scores.user_id = users.user_id 
INNER JOIN maps ON user_game_scores.map_id = maps.map_id 
INNER JOIN player_nicknames ON user_game_scores.user_id = player_nicknames.user_id 
WHERE user_game_scores.deleted is null 
AND users.deleted is null 
AND player_nicknames.deleted is null 
ORDER BY user_game_scores.score DESC 

But it returns this: (click here) - names etc have been removed from the image as it may not be appropriate to display Wie Sie kann sehen, dass der Rank dazu neigt, eine oder zwei Nummern (Nummer 2 und 23) zu verpassen. Ich verstehe, dass etwas wie Rang 24 gruppieren und fortfahren wird (was ich bevorzuge, in dieser Instanz zu passieren), aber ich verstehe nicht, warum einige des Rangs fehlen und wirklich nicht wollen, diese Funktionalität zu posten.

Sorry, das ist lang, aber ich dachte, ID bieten so viele Informationen wie ich kann. Danke im Voraus!

+0

Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –

+0

Es ist wahrscheinlich, weil Ihre "SELECT GROUP_CONCAT" Unterabfrage nicht "gelöschte" ("deleted is null") Einträge filtert. –

+0

Sie Sir, sind erstaunlich. Es war tatsächlich, dass ein anderer Datensatz gelöscht worden war, aber ich hatte den Eintrag von dieser Tabelle nicht gelöscht. Vielen Dank! – TheMellor

Antwort

0

Es ist wahrscheinlich, weil Ihre SELECT GROUP_CONCAT-Unterabfrage nicht "gelöscht" (gelöscht ist Null) Einträge filtert. - Paul Spiegel vor 9 Stunden

Verwandte Themen