PDA

Ver la Versión Completa : Presentar ordern aleatorio en un Select


aerosB4
11-08-2004, 23:07:40
Hola a todos:

Espero que todos se encuentren muy bien. Tengo el siguiente problema, necesito hacer una consulta a una tabla, pero que los registros que me entregue como resultado se encuentren ordenados aleatoriamente.

En Oracle se utilizaba la función interna trunc(dbms.random.value(1,x),0) AS VALOR, la cual generaba una columna adicional que colocaba números aleatorios y con esta nueva columna se podía hacer el ORDER BY. Teniendo un SQL de la siguiente forma:

SELECT trunc(dbms.random.value(1,1000),0) AS valor, a.*
FROM tabla a
ORDER BY valor


¿En Interbase 6 también existe alguna funcion que me pueda ayudar?

Mil gracias por su ayuda

Saludos
AerosB4

Rufus
12-08-2004, 10:46:34
En interbse y firebird, dentro de la UDF estándar, la ib_udf.dll, está la funcion RAND() para generar números aleatorios.

La función no tiene parámetros de entrada y genera un valor de tipo DOUBLE PRECISION entre 0 y 1 or lo que solo bastará multiplicarlo por lo que se quiera y truncarlo para obtener los valores en el rango que se precisen.

¡Pero atención!. A ver si alguien más nos puede ayudar porque en las pruebas que yo he hecho me sale el mismo valor para todos los registros que selecciono.

Lepe
12-08-2004, 15:33:25
¿ habrá que poner Randomize en el initialization o en el OnCreate del form principal ?

jachguate
12-08-2004, 18:29:15
Randomize, de delphi, no tiene nada que ver en este caso... dado que se habla de la función RAND de la ib_udf.dll para interbase/firebird...

aom
16-08-2004, 12:53:21
Hola,
rand() utiliza la hora actual para generar el nº aleatorio. Este nº será igual en los registros que se hayan generado durante el mismo segundo.

Saludos