SORTEAR REGISTRO NO BANCO DE DADOS

ALEXPASSOS 27/07/2009 01:26:53
#317941
Olá

Tenho uma tabela no banco de dados que tem uns 150 registro

queria fazer um sorteio desses registros e exibir um de cada vez... como se fosse uma dica do dia... que cada dia mostra uma dica diferente.

Quando eu clicar em um botão ele mostra um registro aleatório diferente até ser exibido todos.

Como faço esse sorteio? Alguma ideia?
RICART 27/07/2009 07:56:41
#317942
Para fazermos o sorteio via sql, precisamos saber qual é o banco de dados, pois há diferenças entre Oracle, SqlServer/Access e Firebird, e outros.
Como vc não deseja repetir as dicas, e em um sorteio há esta possibilidade, será necessário existir uma forma de marcar a dica que já foi utilizada para eliminá-la no próximo sorteio.

ALEXPASSOS 27/07/2009 08:42:33
#317944
Olá

Eu estou utilizando o banco de dados MySQL.... é isso mesmo que estou querendo fazer um sorteio e marcar a dica pra pra sair do próximo sorteio....

Mas acho que estou precisando mesmo é saber como é o sorteio porque essa parte de marca já tinha pensado
RICART 27/07/2009 09:02:01
#317947
Bom, vc apenas manda ordernar com o rand() no final e informa que somente precisa do primeiro registro:

select dica from (SELECT Dica FROM tblDicas ORDER BY rand()) LIMIT 0,1



ALEXPASSOS 27/07/2009 09:56:35
#317953
Olá Ricart

Eu esqueci que nesse projeto estou usando o Access mesmo (Quando é projeto simples uso ele)

eu coloquei assim:

Dim ds As New DataSet
ds.Clear()

myComando.Connection = conexao
myComando.CommandText = [Ô]select * from filme where status like [ô][Ô] & [Ô]Falta Assistir[Ô] & [Ô][ô] order by rand() limit 1[Ô]
myComando.CommandType = CommandType.Text
dApt.SelectCommand = myComando
dApt.Fill(ds)
Application.DoEvents()

MsgBox([Ô]cod [Ô] & ds.Tables(0).Rows(0).Item([Ô]codigo[Ô]))

e esta dando erro na linha

dApt.Fill(ds)

Erro de sintaxe (operador faltando) na expressão de consulta [ô]rand() limit 1[ô].

e não estou conseguindo entender porque.... a tabela tem registro.
TECLA 27/07/2009 10:07:42
#317954
Resposta escolhida
No ACCESS, tente assim:

SELECT TOP 1 *
FROM tabela
ORDER BY RND(NOW()+campoID)
Tópico encerrado , respostas não são mais permitidas