Foros del Web » Programando para Internet » ASP Clásico »

Consulta aleatoria con SQL y Access

Estas en el tema de Consulta aleatoria con SQL y Access en el foro de ASP Clásico en Foros del Web. Hola Solicito su ayuda con una consulta que necesito hacer en una bdd realizada en Access (se que access no es la gran cosa pero ...
  #1 (permalink)  
Antiguo 08/07/2003, 12:41
Avatar de xBlaze  
Fecha de Ingreso: julio-2002
Ubicación: Lemuria
Mensajes: 87
Antigüedad: 21 años, 10 meses
Puntos: 0
Pregunta Consulta aleatoria con SQL y Access

Hola

Solicito su ayuda con una consulta que necesito hacer en una bdd realizada en Access (se que access no es la gran cosa pero en el servidor donde me encuentro no cuentan con SQL).

El caso es el siguiente: Resulta que estoy subiendo un curso de Lenguaje Ensamblador para un profesor y necesito realizar un examen al final de cada unidad, las preguntas y respuestas se encuentran en tablas distintas relacionadas con el Id de las preguntas ya que son por opcion.

Dentro de la tabla de Preguntas se encuentran las de todas las unidades nadamas identificadas por el Id de la unidad, las preguntas van a seguir siendo actualizadas por el profesor conforme el considere conveniente por lo tanto no es posible darles un orden o que se encuentren todas las preguntas de una unidad juntas. El Id de la tabla de preguntas es Autonumerico.

Lo mas interesante es que necesito hacer el examen por ejemplo de 10 preguntas nadamas (puede haber mas de 20 preguntas por unidad en la bdd) y estas tienen que ser aleatorias pero solo de la unidad que se esta evaluando para que cada vez que entre el alumno no se encuentre con las mismas preguntas y el mismo orden.

Con instrucciones SQL puedo obtener todas las preguntas de la unidad en cuestion pero mi problema es ¿como las ordeno aleatoriamente? ¿existe alguna instruccion en SQL que me pueda ayudar? ¿alguien tiene alguna sugerencia de como hacerlo?

De antemano, gracias por su ayuda.
__________________
Darth xBlaze
Gerente de Sistemas
Arisoft
  #2 (permalink)  
Antiguo 08/07/2003, 16:45
 
Fecha de Ingreso: enero-2002
Mensajes: 349
Antigüedad: 22 años, 5 meses
Puntos: 1
Hola, ve al buscador y escribe la palabra "aleatoria", y selecciona el foro ASP, ahi vas a encontrar varios ejemplos de como hacerlo.

Saludos
  #3 (permalink)  
Antiguo 08/07/2003, 16:51
Avatar de Gurrutello  
Fecha de Ingreso: enero-2002
Ubicación: Ontario,Toronto [Canada]
Mensajes: 2.017
Antigüedad: 22 años, 4 meses
Puntos: 6
hola
prueba poniendo despues de tu conexion
'al principio de tu codigo
'constante
Const adCmdText = &H00001

' abrimos
'ejemplo
turecordset.open strsql, conexion, 3, 3, adCmdText
Dim intRnd
Randomize Timer
intRnd = (Int(RND * turecordset.RecordCount))
turecordset.Move intRnd

response.write turecordset("tu_valor")

esto lo encontre por ahi

y espero que te sirva
saludos
  #4 (permalink)  
Antiguo 09/07/2003, 02:35
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Bajo mi punto de vista, este problema solo tiene una solución.

Todas las respuestas que he visto sobre este tema son posicionar el puntero en un registro aleatoriamente y mostrarlo, pero eso no te da por ejemplo 10 registros de un conjunto de 100 diferentes, aleatorios y sin orden pre-establecido.

Mi solución pasa por poner un campo más en la tabla, por ejemplo ORD_ID, recorrer toda la tabla y ir asignando a ese campo un valor aleatorio cada vez que quieras recuperar los diez registros.

Código:
totRec = rs.RecordCount
do while not rs.eof
    rs.edit
    rs("ORD_ID") = Int(totRec * Rnd())
    rs.Update
    Randomize()
loop
Una vez que lo has actualizado, abre de nuevo el recordset ordenado por ese nuevo campo

Código:
SELECT TOP 10 * FROM TABLA ORDER BY ORD_ID
Eso te devolverá lo que quieres. Quizás no sea tan rápido como si fuera una sola consulta, pero me temo que es la única manera de llevar a cabo esa tarea.

Si alguien conoce otra forma más eficiente, que lo ponga. Sería de interés para todos.

Espero que te sirva.

Última edición por AlexNV; 09/07/2003 a las 03:08
  #5 (permalink)  
Antiguo 09/07/2003, 08:19
Avatar de xBlaze  
Fecha de Ingreso: julio-2002
Ubicación: Lemuria
Mensajes: 87
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola muchisimas gracias por sus propuestas, voy a probarlas a ver cual es la mas aceptable, me inclino un poco mas por la de AlexNV pues en la de Gurrutelo tendria que comprobar que no me devuelva un registro repetido.

Ya les comentare de mis resultados.

Gracias
__________________
Darth xBlaze
Gerente de Sistemas
Arisoft
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:51.