Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

0cool

[Resolvido] pegar posição em ranking do usuário

Recommended Posts

Pessoas, seguinte.

 

Tenho uma tabela chamada tbl_pontuacao nela tem 2 colunas: col_id e col_pontos

 

Suponhamos que eu tenha 5 registros da seguinte maneira

 

col_id = 1

col_pontos = 100

 

col_id = 5

col_pontos = 20

 

col_id = 4

col_pontos = 76

 

col_id = 2

col_pontos = 167

 

col_id = 3

col_pontos = 10

 

A questão é... como eu posso saber em que colocação o col_id = 5 esta, neste exemplo acima somando pela mente eu sei que ele esta em 4º lugar mais como eu posso fazer isso pelo mysql e informar em que colocação determinado registro esta.

 

Obrigado.

 

Att.: Caio

Compartilhar este post


Link para o post
Compartilhar em outros sites

No SQL de sua consulta, use um ORDER BY col_pontos DESC para ordenar.

 

Agora fiquei em duvida, você quer que retorne uma coluna com a ordem da colocação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, vamos supor que eu tenha um sistema de pontuação, a tabela até aquele momento esta assim

 

tbl_pontuacao

 

id = 1 : user = 2 : points = 100

id = 2 : user = 9 : points = 14

id = 3 : user = 7 : points = 180

id = 4 : user = 3 : points = 13

id = 5 : user = 5 : points = 140

 

Com isso eu insiro um novo registro com os seguintes dados

 

id = 6 : user = 12 : points = 170

 

E dai em seguida eu preciso através do sql buscar em que posição na colocação este registro ficou, nesse caso pela lógica eu sei que ele ficou em 2º lugar, mais como fazer isso pelo código, como fazer para que o sistema me mostre em qual colocação determinado registro ficou.

 

* Eu preciso pegar a colocação apenas de 1 registro, não preciso listar, ou colocar em ordem, preciso apenas da colocação de determinado registro levando em conta vários registros.

 

Quem puder me ajudar.

 

Att.: Caio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde

 

Desculpe ressuscitar o tópico, mas pesquisei o assunto e encontrei a solução. Bom ficar registrado aqui:

 

1) Para exibir o Rank geral (exemplo com os primeiros 10 registros)

 

SELECT u.col_id, @rownum:=@rownum+1 AS rownum, u.col_nome
FROM (
   SELECT col_id, col_nome
   FROM tbl_pontuacao
   ORDER BY col_pontos desc LIMIT 10
) u,
(SELECT @rownum:=0) r

 

2) Tenho o col_id do usuário (15 por exemplo) e preciso saber a posição dele no Ranking

SELECT rank 
FROM (select @rownum:=@rownum+1 'rank', p.col_id from tbl_pontuacao p, 
(SELECT @rownum:=0) r ORDER BY col_pontos desc) m where m.cod_id=15

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.