Eu estou com um probleminha aqui que ta realmente me dando bastante dor de cabeça (acredito que pra muitos aqui isso seria resolvido com uma mão nas costas)..
É o seguinte, eu sou desenvolvedor de jogos indie, a minha área é mais pra programação mesmo, não manjo de html, php, mysql etc etc, enfim meu problema é o seguinte: eu inseri um highscore online em um jogo que estou desenvolvendo (funciona perfeitamente), o problema mesmo ta na hora de classificar os dados, eu busquei e não encontrei como faz.. Vou ilustrar mais:
Supondo que lá no meu banco de dados eu tenha as seguintes entradas (por ordem de inserção):
2892 Diego
0199 Douglas
8279 Rafael
7289 Fábio
1829 Carlos
sendo 'Score' e 'NickName' respectivamente a identificação, a tabela é 'HighScore'
O query que classifica em ordem decrescente eu já entendi, eu usei:
"SELECT * FROM HighScore BY NickName DESC ORDER BY Score DESC"
e fica funcionando perfeitamente, o resultado é:
8279 Rafael
7289 Fábio
2892 Diego
1829 Carlos
0199 Douglas
O problema é o seguinte, supondo que o jogador 'Rafael' resolva jogar novamente e tenha a pontuação '5871', lá na tabela vai ficar com 2 registros do mesmo jogador, vai ficar assim:
2892 Diego
0199 Douglas
8279 Rafael
7289 Fábio
1829 Carlos
5871 Rafael
e na hora de classificar acontece isso:
8279 Rafael
7289 Fábio
5871 Rafael
2892 Diego
1829 Carlos
0199 Douglas
Ai que ta o erro, não é pra aparecer 2 vezes o Rafael, somente a maior pontuação dele.
em meus estudos eu localizei a função GROUP e inseri na query:
"SELECT * FROM HighScore GROUP BY NickName DESC ORDER BY Score DESC"
Esse group (pelo que eu entendi, me corrijam se eu estiver errado) agrupa a entrada, então quando tem nomes iguais ele junta todos em apenas 1..
"Aparentemente" funciona, o resultado fica sendo esse:
7289 Fábio
5871 Rafael
2892 Diego
1829 Carlos
0199 Douglas
O erro é que apareceu a ÚLTIMA pontuação do 'Rafael' e não a MAIOR.. Alguém saberia me informar qual a query eu uso, que função? Se eu não expliquei bem me avisem que eu encontro outra forma de ilustrar a minha situação.. o que eu não queria é ter que excluir as entradas, quero manter todas as pontuações (mesmo de jogadores repetidas pois pretendo fazer uma tela onde o jogador insere o nome e aparecem todas as pontuações enviadas por esse jogador).
Se alguém puder me ajudar vou ficar eternamente grato, já revirei a internet em busca de soluções e nada, mas creio que minha pouca (ou quase nula) experiência com mysql dificulte as coisas.. hehe.. Enfim, a única coisa que eu posso oferecer é o nome na tela de 'Agradecimentos' do jogo..
Pergunta
Evandro Gomes
Eae galera, tudo bem?
Eu estou com um probleminha aqui que ta realmente me dando bastante dor de cabeça (acredito que pra muitos aqui isso seria resolvido com uma mão nas costas)..
É o seguinte, eu sou desenvolvedor de jogos indie, a minha área é mais pra programação mesmo, não manjo de html, php, mysql etc etc, enfim meu problema é o seguinte: eu inseri um highscore online em um jogo que estou desenvolvendo (funciona perfeitamente), o problema mesmo ta na hora de classificar os dados, eu busquei e não encontrei como faz.. Vou ilustrar mais:
Supondo que lá no meu banco de dados eu tenha as seguintes entradas (por ordem de inserção):
2892 Diego
0199 Douglas
8279 Rafael
7289 Fábio
1829 Carlos
sendo 'Score' e 'NickName' respectivamente a identificação, a tabela é 'HighScore'
O query que classifica em ordem decrescente eu já entendi, eu usei:
"SELECT * FROM HighScore BY NickName DESC ORDER BY Score DESC"
e fica funcionando perfeitamente, o resultado é:
8279 Rafael
7289 Fábio
2892 Diego
1829 Carlos
0199 Douglas
O problema é o seguinte, supondo que o jogador 'Rafael' resolva jogar novamente e tenha a pontuação '5871', lá na tabela vai ficar com 2 registros do mesmo jogador, vai ficar assim:
2892 Diego
0199 Douglas
8279 Rafael
7289 Fábio
1829 Carlos
5871 Rafael
e na hora de classificar acontece isso:
8279 Rafael
7289 Fábio
5871 Rafael
2892 Diego
1829 Carlos
0199 Douglas
Ai que ta o erro, não é pra aparecer 2 vezes o Rafael, somente a maior pontuação dele.
em meus estudos eu localizei a função GROUP e inseri na query:
"SELECT * FROM HighScore GROUP BY NickName DESC ORDER BY Score DESC"
Esse group (pelo que eu entendi, me corrijam se eu estiver errado) agrupa a entrada, então quando tem nomes iguais ele junta todos em apenas 1..
"Aparentemente" funciona, o resultado fica sendo esse:
7289 Fábio
5871 Rafael
2892 Diego
1829 Carlos
0199 Douglas
O erro é que apareceu a ÚLTIMA pontuação do 'Rafael' e não a MAIOR.. Alguém saberia me informar qual a query eu uso, que função? Se eu não expliquei bem me avisem que eu encontro outra forma de ilustrar a minha situação.. o que eu não queria é ter que excluir as entradas, quero manter todas as pontuações (mesmo de jogadores repetidas pois pretendo fazer uma tela onde o jogador insere o nome e aparecem todas as pontuações enviadas por esse jogador).
Informações adicionais
A página de highscore do jogo:
http://www.gomferr.com.br/madspaceinvaders/?p=highscore
Se alguém puder me ajudar vou ficar eternamente grato, já revirei a internet em busca de soluções e nada, mas creio que minha pouca (ou quase nula) experiência com mysql dificulte as coisas.. hehe.. Enfim, a única coisa que eu posso oferecer é o nome na tela de 'Agradecimentos' do jogo..
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados