Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte, preciso retornar a posição que determinado usuario está no banco, apos consulta. Exemplo:
Situação atual:
ID Nome Pontos
1 Usuario 1 10
2 Usuario 2 5
3 Usuario 3 30
4 Usuario 4 1
após realizar o order by Pontos, ele fica desta forma
ID Nome Pontos
3 Usuario 3 30
1 Usuario 1 10
2 Usuario 2 5
4 Usuario 4 1
Porem queria realizar uma consulta na qual retorna a posição que o Usuario 2 esteja, ou seja, meu resultado seria 3, ja que este usuario encontra-se no terceiro registro da consulta
precisso fazer isso numa query para assim usar no meu ranking do site, alguem poderia me ajudar
é isso mesmo que acabei de encontrar, hehe
estou tentando dar uma estudada, mas ainda sem sucesso.
o que preciso seria retornar a diferença entre um registro e outro. Algo assim
TABELA RANK
----------------------
ID | PONTOS | NOME
----------------------
1 | 15 | JUQUINHA
2 | 17 | ZEQUINHA
3 | 18 | PEDRINHO
4 | 21 | MARIAZINHA
5 | 32 | CAMILINHA
----------------------
preciso retornar na consulta a diferente entre o ID atual e o ID anterior, ou seja, a diferença entre o ID 2 e ID 1 é de 2. A diferença entre o ID 3 e ID 2 é 1., e por aí vai
SELECT jogador,
pontos,
@curRank := @curRank + 1 AS rank
FROM ranking p, (SELECT @curRank := 0) r
ORDER BY pontos desc
tentei usar desta forma, utilizando um where rank = 2, mas esta dando erro na consulta. porque assim fazia 2 consulta e subtraria. Conhece uma forma mais facil para isso?
COmo faço para por um WHERE mesta query só da erro, porque o alias 'rank' nao é reconhecido
SELECT jogador, pontos, @curRank := @curRank + 1 AS rank FROM ranking p, (SELECT @curRank := 0) r WHERE rank = 2 ORDER BY pontos desc
#1054 - Unknown column 'rank' in 'where clause'
Já vi posts semelhantes tente o pesquisar aqui ou pelo google que vc acha soluções
Algo como no google
Imasters forum mysql rank
consegui, value
admin pode trancar
Olá fmda,
Dei uma pesquisada pela internet e encontrei isto, testei aqui e acho que irá resolver o seu caso.
select @rownum:=@rownum+1 'rank', usuarios.* from usuarios, (SELECT @rownum:=0) r order by Pontos
Veja se isto te ajuda.
Qualquer coisa só dar um grito.
Abraços,
Vitor M. Braga.