Ir para conteúdo

POWERED BY:

Arquivado

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

Cleverson Silva

Pegar Registro Aleatório

Recommended Posts

Pessoal, por favor, alguém sabe me explicar como posso pegar (chamar) um registro de uma tabela aleatóriamente?Ex.:tenho uma tabela com 100.000 registro, quero pegar um dos registro aleatóriamente, depois outro, depois outro.função? como?Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço assim:

 

ASP

[*]

[*]conexão com o banco..

[*]

[*]set rs=server.createobject ("adodb.recordset")

[*]

[*]sql = "select * from tabela"

[*]rs.open sql , conexdados,3,1

[*]

[*]while not rs.eof

[*]questoes = questoes & rs("campo")&"|"

[*]rs.movenext

[*]wend

[*]

[*]total_exibicao = 9 ' total de ítens para perguntar

[*]

[*]For i = 0 to total_exibicao

[*]

[*] ArrayQuestoes = Split(questoes, "|")

[*]

[*] Randomize()

[*] QuestaoSorteada = RND() * UBound(ArrayQuestoes)

[*]

[*] cods = ArrayQuestoes(QuestaoSorteada) & ","

[*]

[*] session("campo") = session("campo") & campo

[*]

[*]Next

[*]

[*]response.write session("campo")

[*]

 

Assim ele sempre vai sortear um registro diferente..

 

Espero ter ajudado ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa segunda vai pegar um diferente mas vai precisar de delay grande pra concatenar os registros se forem muitos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, não deu certo as duas tentativas, pelo menos comigo, :unsure:

 

Estou com uma tabela que tem registros 100.000 registros, certo?

 

o campos TITULO está assim 000.001, 000.002 até 100.000, certo?

 

preciso abrir a tabela pegar aleatóriamente um registro, e mudar seu o campo STATUS, para ter a informação que este título foi usado. certo?

 

usando a segunda tentativa demorou muito e a pagina expirou (se for deste jeito mesmo, me explique melhor) .

 

por favor me ajudem. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando a segunda tentativa demorou muito e a pagina expirou (se for deste jeito mesmo, me explique melhor) .

isso eu tentei alertar...-------------------------------qual seu db??

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom qual bd esta usando ? se for access utiliza esse...

 

ASP

[*]SQL="SELECT TOP 1 * FROM tabela WHERE status=False ORDER BY Rnd(Int(Now()*[iD])-Now()*[iD]);"

 

Sendo que o status (ali na clusula WHERE) você poe tipo que não foi usado 9não sei como você chama isso no banco de dados)... e ID (que ta no ORDER BY) é o campo auto numerico da sua tabela, se for outro nome entra troca os dois IDs que ta ali...

 

depois de selecionar, salva a ID e faz um update no banco de dados nesse registro mudando o status dele ;)

 

Facinho =)

 

Abraçosss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos vocês que estão me ajudando, porém ainda não resolvi esta questão....estou usando o banco de dados firebird (ou intebase, puro SQL, muito bom).o nome da tabela é TITULOS_GERADOS, não tem campo integer, ou numerico, o campo TITULO é CHAR(7), chave primaria.codigo:Set rstemp=Database.Execute("Select * From TITULOS_GERADOS where Status='G' ORDER BY Num_Titulo(Int(Now()*Num_Titulo)-Now()*Num_Titulo)")claro que não funcionou... como deveria ser o codigo? a tabela tem que ter um campo numerico ou codigo, ou ID, ou autonumeração? (vai me ocupar espaço, porém se não tiver outro jeito...).

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.