Sou programador junior java web em struts, estou com uma duvida, tenho uma tabela de usuarios, com os campos nome e pontos.
Em uma pagina ele traz uma lista com os top 10(com mais pontos)
SELECT TOP 10 * FROM usuarios ORDER BY pontos DESC
Na mesma pagina tem um input onde o usuario pode digitar um nome e trazer em que colocação este nome esta na classificação geral.
Tem mais de 25.000 linhas na tabela. Penso de qual maneira pratica e de desempenho posso fazer isto.
Aceito ideias.
Eu traria todos, sem usar o TOP, colocaria em um HashMap usando pontos como chave e nome como valor
A
admspt
Esse top 10 é só para montar uma tabela com os top
dai em cima tem um input onde o usuario pode digitar um nome
e em cima dessa tabela com os top 10 vai aparecer uma linha com o nome do usuario digitado
posição | nome | pontos
Ex.:
17212º | Joao da Silva | 5210 Pontos
aki em baixo tem a tabela usando aquela linha com o TOP 10
Estou no trabalho internet só liberada para os principais sites de programação
quando eu chega em casa eu vejo
vlw ai
A
admspt
Conversei com meu colega aqui do lado, disse que essa função “RANK” não serve pra trazer só 1 resultado.
o TOP 10 ali em cima ta blz ele cria uma tabela dos 10 primeiros, mais meu problema é o usuario digitar o nome e
dizer qual a posição dele em relação aos outros
T
thingol
O RANK não traz apenas um resultado (é claro - você não viu a documentação da Microsoft? )
Você precisa URGENTEMENTE de instalar o SQL Server Books Online na sua máquina, já que lhe proíbem de olhar a Internet), mas você precisa pegar o RANK (que já dá 99,5% do seu trabalho) e criar um select um pouco mais complexo, simplesmente para mostrar o rank.
Ou você tem preguiça de escrever queries SQL?
A
admspt
mais eu só quero que traga 1 resultado, com rank não tem como fazer isso
não quero que traga os 100 melhores quero entrar com os dados(nome) e ele me trazer a posição desse nome no meio desses 100 que estão no ranking
ceccone
Tenta algo assim:
select usu1.Posicao, usu2.*
from (select RANK() OVER (order by pontos desc) as Posicao, * from usuarios ) usu1
inner join usuarios usu2
ON usu1.nome = usu2.nome
WHERE usu2.nome like ‘%Manoel%’
Isso assumindo que o campo usuarios.nome seja tanto o nome do usuário quanto a chave da tabela.