Obtener fila sin Nro de fila...?

15/12/2006 - 15:37 por Daniel G. Samborski | Informe spam
Hola, tengo una onsulta.

Supongamos que tengo una tabla llamada Sorteo y esta tiene:

Nombre Direccion Telefono
Daniel J. Jaurez 123 587485
Gustavo A. Thomas 232 9874587
Samborski P. de Alvear 233 542125
Jorge Av. San Diego 22 2359878
Roberto Av. San Martin 12 5878525

Y deseo obtener al azar una de estas filas.

Para esto he realizado este codigo.

declare @maximo as int
declare @numero int
select @maximo=count(nombre) from sorteo
set @numero=(rand()*@maximo)+1
if @numero<1 set @numero=1
if @numero>@maximo set @numero=@maximo

De esta manera obtengo un Nro al azar entre la primera fila y la ultima del
total de filas de la tabla...Ahora, como hago un select de esa fila si la
tabla no tiene Nº de filas.

select nombre, direccion, telefono from tabla where...

Preguntas similare

Leer las respuestas

#1 pepito
15/12/2006 - 15:54 | Informe spam
Se me ocurre que una variable tipo tabla (temporal claro está), la cual
tendría un campo identidad, y el resto de campos sería igual a la tabla
Sorteo.

En la temporal insertarás los registros de la tabla Sorteo, así cada
registro obtendrá un número único, el cual podrás utilizar sacar el
afortunado!

Espero te sea de utilidad!
Respuesta Responder a este mensaje
#2 Daniel G. Samborski
15/12/2006 - 16:46 | Informe spam
Gracias, lo probare.


Daniel.

"Alejandro Mesa" escribió en el
mensaje news:
Daniel,

Cual es la clave primaria de esa fila?

De todas maneras puedes usar el siguiente codigo para seleccionar una fila
al asar, si tu SQL Server esta instalado en NT 4.00 o mayor.

select top 1 *
from tu_tabla
order by checksum(newid())


AMB

"Daniel G. Samborski" wrote:

Hola, tengo una onsulta.

Supongamos que tengo una tabla llamada Sorteo y esta tiene:

Nombre Direccion Telefono
Daniel J. Jaurez 123 587485
Gustavo A. Thomas 232 9874587
Samborski P. de Alvear 233 542125
Jorge Av. San Diego 22 2359878
Roberto Av. San Martin 12 5878525

Y deseo obtener al azar una de estas filas.

Para esto he realizado este codigo.

declare @maximo as int
declare @numero int
select @maximo=count(nombre) from sorteo
set @numero=(rand()*@maximo)+1
if @numero<1 set @numero=1
if @numero>@maximo set @numero=@maximo

De esta manera obtengo un Nro al azar entre la primera fila y la ultima
del
total de filas de la tabla...Ahora, como hago un select de esa fila si la
tabla no tiene Nº de filas.

select nombre, direccion, telefono from tabla where...



Respuesta Responder a este mensaje
#3 Daniel G. Samborski
15/12/2006 - 16:48 | Informe spam
Mi idea era no tener la necesidad de crear otra tabla.
Gracias, igual vere de probar lo que me dijiste.


Daniel.

"pepito" escribió en el mensaje
news:
Se me ocurre que una variable tipo tabla (temporal claro está), la cual
tendría un campo identidad, y el resto de campos sería igual a la tabla
Sorteo.

En la temporal insertarás los registros de la tabla Sorteo, así cada
registro obtendrá un número único, el cual podrás utilizar sacar el
afortunado!

Espero te sea de utilidad!

Respuesta Responder a este mensaje
#4 Javier Loria
15/12/2006 - 19:39 | Informe spam
Hola Daniel:
Una forma conocidida es usar una la funcion NEWID:
SELECT TOP 1 Nombre, Direccion, Telefono
FROM Sorteo
ORDER BY NEWID()
Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Daniel G. Samborski" wrote in
message news:
Hola, tengo una onsulta.

Supongamos que tengo una tabla llamada Sorteo y esta tiene:

Nombre Direccion Telefono
Daniel J. Jaurez 123 587485
Gustavo A. Thomas 232 9874587
Samborski P. de Alvear 233 542125
Jorge Av. San Diego 22 2359878
Roberto Av. San Martin 12 5878525

Y deseo obtener al azar una de estas filas.

Para esto he realizado este codigo.

declare @maximo as int
declare @numero int
select @maximo=count(nombre) from sorteo
set @numero=(rand()*@maximo)+1
if @numero<1 set @numero=1
if @numero>@maximo set @numero=@maximo

De esta manera obtengo un Nro al azar entre la primera fila y la ultima
del total de filas de la tabla...Ahora, como hago un select de esa fila si
la tabla no tiene Nº de filas.

select nombre, direccion, telefono from tabla where...


Respuesta Responder a este mensaje
#5 Javier Loria
15/12/2006 - 19:51 | Informe spam
Hola Daniel:
Sigue la recomendacion de Alejandro que usar: CHECKSUM(NEWID())
Saludos,


Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Javier Loria" wrote in message
news:
Hola Daniel:
Una forma conocidida es usar una la funcion NEWID:
> SELECT TOP 1 Nombre, Direccion, Telefono
FROM Sorteo
ORDER BY NEWID()
> Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Daniel G. Samborski" wrote in
message news:
Hola, tengo una onsulta.

Supongamos que tengo una tabla llamada Sorteo y esta tiene:

Nombre Direccion Telefono
Daniel J. Jaurez 123 587485
Gustavo A. Thomas 232 9874587
Samborski P. de Alvear 233 542125
Jorge Av. San Diego 22 2359878
Roberto Av. San Martin 12 5878525

Y deseo obtener al azar una de estas filas.

Para esto he realizado este codigo.

declare @maximo as int
declare @numero int
select @maximo=count(nombre) from sorteo
set @numero=(rand()*@maximo)+1
if @numero<1 set @numero=1
if @numero>@maximo set @numero=@maximo

De esta manera obtengo un Nro al azar entre la primera fila y la ultima
del total de filas de la tabla...Ahora, como hago un select de esa fila
si la tabla no tiene Nº de filas.

select nombre, direccion, telefono from tabla where...






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida