Ir para conteúdo

POWERED BY:

Arquivado

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

*Marcinha*

Listar registros aleatoriamente

Recommended Posts

Essa função é somente para SQLServer

É comum em alguns sistemas a necessidade de sortear um determinado registro dentro do banco de dados. Escolher aleatoriamente o registro.

 

Para realizarmos isso podemos nos aproveitar da função NewId(). A função NewId gera um novo GUID (Global Unique Identifier) a cada vez que é executada. O algorítimo torna impossível uma repetição em um conjunto de milhões de execuções.

 

Se nós utilizarmos o NewId() no Order by então para cada registro será gerado um novo GUID e o registro será ordenado de acordo com esse valor. Como a cada execução os GUIDs gerados serão diferentes, a ordenação nunca será igual.

 

Pode-se então fazer um TOP 1 nesta query para pegar apenas o primeiro registro retornado e temos então nosso sorteio. Veja a query :

 

select top 1 * from tabela order by newid()

 

Fonte: BufaloInfo

Compartilhar este post


Link para o post
Compartilhar em outros sites

"SELECT top 1 * FROM respostas WHERE np= " & qpergunta & "ORDER BY newid()"[Microsoft][ODBC Microsoft Access Driver] Undefined function 'newid' in expression. Pois é não consegui fazer funcionar, alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser porque seu banco é Access. Meu banco é sql server e funcionou normalmente. Dá uma pesquisada no fórum e procure saber como é a instrução para access.

Compartilhar este post


Link para o post
Compartilhar em outros sites

*Marcinha*,

 

Obrigado pela sua resposta, realmente essa função só funciona no sql server, infelizmente o access não possui esse recurso tão simples, já contornei o problema graças a um tópico do bicicleta, que consiste em jogar as variaveis num array, ai faz o sorteio, subtrai a variavel sorteada, sorteia novamente, até o array ficar nulo.

 

Se tiver curiosidade resolvi assim:

http://www.imasters.com.br/forum/index.php?showtopic=102458

 

[]´s Raul

Compartilhar este post


Link para o post
Compartilhar em outros sites

Intruções servem, as funções é que cada desenvolvedor de sua base cria e nomeia.

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.