Ir para conteúdo

POWERED BY:

Arquivado

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

0cool

Pontuação mostrar colocação

Recommended Posts

Hello!

 

Tenho uma tabela aonde insiro uma pontuação, até ai tudo bem.

 

Agora tenho que saber como posso saber em qual colocação determinada pontuação ficou, suponhamos que eu tenha a seguinte tabela

 

usuario01 - 9(pontos)

usuario02 - 4(pontos)

usuario03 - 1(pontos)

usuario04 - 5(pontos)

usuario05 - 7(pontos)

 

O dado em negrito é o último que foi inserido, eu gostaria de saber como eu faço para saber a colocação deste resultado levando em conta os outros dados, nesse exemplo o usuario05 esta na 2 colocação, mas como eu poderia saber isso utilizando o sistema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça uma comparação qual o maior valor, você consegue atraves de um simples IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com toda certeza você não entendeu, o code não terá apenas estes 5 registros, com o tempo terá milhares, com isso impossível fazer isso com if, sem contar que com If seria a maneira mais podre de se fazer isso, tenho certeza que tem como fazer isso pelo code em conjunto com a query do BD, por isso sem condições com if.

 

Se alguém ai souber como fazer sem o uso de POG por favore diga-me.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer direto na SQL, pegando atraves do SELECT MAX, e ordenando numericamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não entendeu, SELECT Max... ordenando? mas assim eu colocaria os resultados em ordem, o que estou precisando é saber a colocação de determinado resultado, olhe no meu primeiro post, queria por exemplo pegar a colocação de determinado registro e não colocar em ordem.

 

------

 

Pessoas, estou ainda precisando, se alguém souber como fazer isso, diga-me please.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você tiver um campo no banco de dados com a pontuação, simplesmente, faça a ordenação do maior, enetendeu....

 

seria a mesma lógica para você fazer a classificação , por exemplo do campeonato de futebol

dá uma olhada aqui, pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas você não entendeu, eu não quero achar o maior ou menor, eu quero achar a colocação de determinado registro, ele pode esta em 2º, 3º, 6º, 10º ou 100º lugar.

 

Estou precisando resgatar a colocação de determinado registro, ou seja: apenas 1 registro e mostrar qual colocação ele esta, não estou querendo listar ou ordenar por colocação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caio, se você quiser a solução apenas em MySql acho que o pessoal do seu outro post http://forum.imasters.com.br/topic/431020-pegar-posicao-em-ranking-do-usuario/page__p__1701229#entry1701229 vai poder te ajudar melhor.

 

Caso não haja uma solução direto pelo select como você está buscando, além das sugestões do xanburzum, você pode:

 

- Resgatar todas as posições do banco ordenadas pela pontuação;

- dar o loop (acrescentando +1 à contagem de cada loop) até chegar à posição que você precisa; e

- qndo a contagem chegar à posição que você precisa, você dá o response.write exibindo na tela a contagem e o registro do banco.

 

Nesse exemplo o resultado da contagem é a posição do que você está procurando.

 

É lógico que essa saída pode ser inviável dependendo da quantidade de registro no seu banco, mas se não houver outra... fica a tentativa de ajuda.

 

Cada um conhece seu sistema melhor que ninguém...

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe um tópico de um simulador campeonato de futebol, onde existe os critérios de classificação, será a mesma lógica

Compartilhar este post


Link para o post
Compartilhar em outros sites

David, pois é, estou em dúvidas se isso pode ser feito pela Query do sql ou terei que colocar code asp no meio, por isso postei esse aqui e aquele lá, mais vou aguardar o pessoal de lá se manifestar pois tenho quase certeza que isso da para se fazer diretamente da query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. então vamos atrás da query...

 

Olha esse link... veja se te ajuda... pelo visto tem jeito pela query sim...

 

ta direto no mysql, mas deve ser possível adaptar para o que você precisa em asp

 

Se não conseguir adaptar, me dá um toque... eu tento aqui tb...

 

http://www.fromdual.com/ranking-mysql-results

 

abçss

 

olha esse aqui tb...

 

http://stackoverflow.com/questions/5760368/find-position-of-a-particular-registry-ranking-asp-classic-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae mano... tava te devendo uma!

 

criei uma tabela no mysql assim:

 

CREATE TABLE `tb_pontuacao` (
 `id_tb_pontuacao` int(11) NOT NULL AUTO_INCREMENT,
 `nm_pessoa_tb_pontuacao` varchar(45) DEFAULT NULL,
 `pontos_tb_pontuacao` int(11) DEFAULT NULL,
 PRIMARY KEY (`id_tb_pontuacao`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1$$

 

<% 
sql_consulta = "SELECT nm_pessoa_tb_pontuacao, pontos_tb_pontuacao, @rownum := @rownum + 1 AS rank FROM tb_pontuacao JOIN (SELECT @rownum := 0) rownum ORDER BY pontos_tb_pontuacao DESC"
set rs = cnx.execute(sql_consulta)

if not rs.eof then
While not rs.EOF
%>

Nome: <%response.Write(rs("nm_pessoa_tb_pontuacao"))%> | Pontuação: <%response.Write(rs("pontos_tb_pontuacao"))%> | Ranking: <%response.Write(rs("rank"))%> <br />

<%rs.MoveNext 
Wend%>
<%end if%>

 

Resultado:

 

Nome: nome01 | Pontuação: 50 | Ranking: 1

Nome: nome03 | Pontuação: 45 | Ranking: 2

Nome: nome02 | Pontuação: 40 | Ranking: 3

 

Para saber a posição de determinado registro é só colocar um WHERE na query com o id da pessoa que você precisa... já era!

 

Qlqer coisa posta ae!!

 

 

abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai David, fico agradecido por me ajudar, valew.

 

No caso estou basicamente é precisando saber a posição de determinado registro, e nesse caso não consegui com sua instrução, utilizei da seguinte forma.

 

sql_consulta = "SELECT nm_pessoa_tb_pontuacao, pontos_tb_pontuacao, @rownum := @rownum + 1 AS rank FROM tb_pontuacao JOIN (SELECT @rownum := 0) rownum WHERE id = 1"

 

Mas não foi, ele sempre me retorna 1 como posição no rank, para todos os registros.

 

Agradeço se puder verificar e ver se estou fazendo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz.. tem razão... não me atentei à isso...

 

pelo que entendi, como ele cria uma pseudo coluna "rank" e adiciona +1 a cada posição, se ele trouxer apenas uma posição ela vai ser sempre a 1ª....

 

foi mal pelo alarme falso rsrs.. vou pesquisar de novo aqui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrsrsrs no problems, o problema no meu caso é identificar a posição de um registro apenas, se for ordenar eu uso o

 

ORDER BY pontos_tb_pontuacao DESC

 

Somente ele já me retorna os results.

 

Mas a questão é a colocação de determinado registro, ai sim o bicho pega heheheh;

Compartilhar este post


Link para o post
Compartilhar em outros sites

usandlo o exemplo do amigo David, você pode fazer assim:

 

sql_consulta = "select * from (SELECT id, nm_pessoa_tb_pontuacao, pontos_tb_pontuacao, @rownum := @rownum + 1 AS rank FROM tb_pontuacao JOIN (SELECT @rownum := 0) rownum)as tab WHERE id = 1"

lembrando que precisa adicionar o campo ID na tabela tb_pontuacao

Compartilhar este post


Link para o post
Compartilhar em outros sites

E assim :

sql= "select * from tabela order by pontuacao"
set rs = con.execute(sql)

while not rs.eof
i = 1
response.write rs("nome") & rs("pontuacao") & i
i=i+1
loop

 

Algo assim, fiz o code meio por cima, mais para dar uma ideia, então deve ter alguns erros.

Ordenando pela pontuação o resultado num response.write seria primeiro o que tem mais pontos, e usando um contador (i) ele já exibe a posição do usuário na tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Vinicios, eu preciso saber apenas o resultado de um registro que eu especificar, tipo... tem varios registro diferentes... com pontuações diferentes... dai tem registro de 1 a 700 e eu queria saber em que colocação estaria o registro com id 455 levando em conta os outros.

 

A questão não é saber qual é a menor ou maior, nem lista os resultados, a dúvida é saber a colocação de um único id independente de que colocação ele esta.

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.