Jump to content


Photo

Consulta Para Retornar Dados Aleatórios Do Banco


  • Faça o login para participar
19 replies to this topic

#1 The Blackjack

The Blackjack

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 07/05/2005, 11:05

Pessoal, estou criando um sistema de sorteio em ASP e gostaria de saber :

Alguém aqui conhece alguma instrução SQL que seja capaz de retornar um registro qualquer do banco de dados, como um sorteio?!

Desde já, muito obrigado!

Abraços!

#2 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 07/05/2005, 11:14

Seria bem interessante se você informasse qual sistema de banco de dados esta sendo utilizado.
------
Mero mortal!

#3 The Blackjack

The Blackjack

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 09/05/2005, 23:16

Seria bem interessante se você informasse qual sistema de banco de dados esta sendo utilizado.

Estou usando um SQL server.

#4 The Blackjack

The Blackjack

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 10/05/2005, 16:09

Seria bem interessante se você informasse qual sistema de banco de dados esta sendo utilizado.

Estou usando um SQL server.

Ninguém conhece um código ou alguma maneira de retornar um dado aleatório como em um sorteio?!

=/

De qualquer forma, mesmo assim, muito obrigado! =|

#5 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 10/05/2005, 16:54

ué.. usa o randon no asp !!

RND

(y)

#6 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 10/05/2005, 18:07

Em SQL Server, você pode tentar esta sintaxe:

SELECT TOP 1 * FROM tabela ORDER By NewID()

Já fiz isso em uma solução alguns anos atras e funcionou muito bem, se precisar de mais de 1 resultado aleatório, aumente a quantidade do TOP.
------
Mero mortal!

#7 The Blackjack

The Blackjack

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 12/05/2005, 08:02

Para Prog :

Ele está dando o seguinte erro, Prog :

Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC para Microsoft Access] Função 'NewID' indefinida na expressão.
/asp/prof_renato/teste_alex.asp, line 8

Como nunca usei essa função "NewID", eu não sei porque está dando esse erro. Ela precisa de parâmetros?!

Para viniciusjau :

Pelo que eu sei, o randomize apenas traz um número randômico entre 0 e 1... no meu caso, eu estou lidando com uma quantidade ilimitada de registros... e preciso escolher randomicamente apenas 1 deles. Não vejo como fazer usando a função "Rnd". Mande um exemplo de como eu deveria proceder, por favor.

Desde já agradecido!

Renato

#8 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 13/05/2005, 13:07

Ola Renato...

O banco de dados o qual roda esse parametro é um SQL Server 2000, ele funcionava também quando era SQL Server 7.0, não sei a respeito de outras versões.

A conexão ASP esta sendo feita diretamente com ADO, com as seguintes caracteristicas:

<%
response.expires = 0
strCx = "server=127.0.0.1;database=nome;uid=usuario;pwd=senha;Provider=SQLOLEDB"

set cx = server.createObject("ADODB.Connection")
cx.commandTimeout = 900
cx.cursorLocation = 3

sub destroi
  cx.close
  set cx = nothing
end sub

on error resume next
cx.open strCx

if err.description <> "" then
  destroi
  err.clear
  response.redirect "fora_do_ar.asp"
end if
%>


------
Mero mortal!

#9 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 13/05/2005, 17:08

Para viniciusjau :

Pelo que eu sei, o randomize apenas traz um número randômico entre 0 e 1... no meu caso, eu estou lidando com uma quantidade ilimitada de registros... e preciso escolher randomicamente apenas 1 deles. Não vejo como fazer usando a função "Rnd". Mande um exemplo de como eu deveria proceder, por favor.

saca só....

SELECT * FROM tabela WHERE campos ORDER BY Rnd(Int(Now()*[ID])-Now()*[ID]);"


ai ele escolhe pelo ID que é no meu caso um campo auto numérico...

não sei se o rnd(), vai funcionar no SQSERVER, se não funfar, tem q usa o randomize

#10 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 14/05/2005, 16:07

Para retornar apenas 1 registro aleatório, em SQL Server, também pode ser utilizado a seguinte sintaxe:

SELECT TOP 1 * FROM tabela WHERE id >= (RAND() * (SELECT MAX(id) FROM tabela))

O NewID() pode retornar diversos números aleatórios.

A sintaxe do Vinicius não testei no SQL Server, funciona perfeitamente em Access, segunda-feira posto uma posição mais concreta a respeito.
------
Mero mortal!

#11 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 19/05/2005, 08:06

A sintaxe do Vinicius não testei no SQL Server, funciona perfeitamente em Access, segunda-feira posto uma posição mais concreta a respeito.

é exatamente rs...

levei por base que o acess aceite o TOP e o SQL tbm..... então sub entendi que ele aceitaria o RND tbm...

#12 luciano_07

luciano_07

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 04/01/2013, 07:21

Olá amigo estou com este mesmo problema a dias, vc consegui resolver?
poderia me ajudar por favor.

coloquei como vc fez
PESQUISAR="SELECT TOP 12 * FROM tabela WHERE id >= (RAND() * (SELECT MAX(id) FROM tabela ))"

e da o erro:
Microsoft][Driver ODBC para Microsoft Access] Função 'RAND' indefinida na expressão.

precisava que listasse 12 registros aleatorios no banco access sem repeti-los

---
então fiz assim funciona uma beleza mais repete:
PESQUISAR="SELECT TOP 12 * FROM tabela order by Rnd(Int(Now()*[ID])-Now()*[ID]) "

entao fiz assim, funciona mais não dá aleatorio:
PESQUISAR="SELECT distinct TOP 12 * FROM tabela "

o distinct não roda com order by

Muito obrigado se puder me ajudar
------------------------------------------


Para retornar apenas 1 registro aleatório, em SQL Server, também pode ser utilizado a seguinte sintaxe:

SELECT TOP 1 * FROM tabela WHERE id >= (RAND() * (SELECT MAX(id) FROM tabela))

O NewID() pode retornar diversos números aleatórios.

A sintaxe do Vinicius não testei no SQL Server, funciona perfeitamente em Access, segunda-feira posto uma posição mais concreta a respeito.



#13 luciano_07

luciano_07

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 07/01/2013, 10:17

Ola muito obrigado por sua ajuda, tentei fazer como vc falou mais ainda não deu certo

erro:
[Microsoft][Driver ODBC para Microsoft Access] Função 'RAND' indefinida na expressão.

tentei assim mais esta repetindo
PESQUISAR = "SELECT DISTINCTROW TOP 9 id FROM tabela order by RND(INT(NOW*id)-NOW*id)"

muito obrigado
------------------

Olá amigo estou com este mesmo problema a dias, vc consegui resolver?
poderia me ajudar por favor.

coloquei como vc fez
PESQUISAR="SELECT TOP 12 * FROM tabela WHERE id >= (RAND() * (SELECT MAX(id) FROM tabela ))"

e da o erro:
Microsoft][Driver ODBC para Microsoft Access] Função 'RAND' indefinida na expressão.

precisava que listasse 12 registros aleatorios no banco access sem repeti-los

---
então fiz assim funciona uma beleza mais repete:
PESQUISAR="SELECT TOP 12 * FROM tabela order by Rnd(Int(Now()*[ID])-Now()*[ID]) "

entao fiz assim, funciona mais não dá aleatorio:
PESQUISAR="SELECT distinct TOP 12 * FROM tabela "

o distinct não roda com order by

Muito obrigado se puder me ajudar
------------------------------------------



Para retornar apenas 1 registro aleatório, em SQL Server, também pode ser utilizado a seguinte sintaxe:

SELECT TOP 1 * FROM tabela WHERE id >= (RAND() * (SELECT MAX(id) FROM tabela))

O NewID() pode retornar diversos números aleatórios.

A sintaxe do Vinicius não testei no SQL Server, funciona perfeitamente em Access, segunda-feira posto uma posição mais concreta a respeito.



#14 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 13/09/2017, 20:23

Buy Doxycycline Hyclate 100mg Acne cialis Viagra Overnight Shipping Viagra Pills Lowest Prices Cheap Doxycycline Online No Prescription viagra cialis Vente De Propecia Generique
Viagra From Mexico Pharmacy cheap cialis Propecia Pack Original Kamagra Oral Jelly Priligy 60 Miligramos cheap cialis Generic Free Shipping Clobetasol 0.05% Psoriasis

#15 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 01/10/2017, 07:26

Fineviagra Viagra Come Acquistare cialis price Sildenafil En Ligne 10 Mg Acyclovir Without Insurance
accutane discount card Antibiotics On Line Priority Delivery cialis Prix Viagra Belgique
Propecia Eficacia 1 Mg Gabapentin Powder Online cialis Buy Now No Rx Acticin Online Real Free Shipping Clobetasol 0.05% Visa Accepted




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq