Mostrar Registros Aleatorios visual foxpro 9.0

Hola experto,
deseo hacerle una consulta espero me ayudes,
de ante mano muchas gracias.
bien el detalle es el siguiente:


1. Tengo esta estructura para cotejar lo que hace esta estructura es tomar la tabla gallos y buscar cotejar (emparejar) por peso, galpón distinto, me funciona de maravilla, lo que deseo es aumentar un modulo en la cual este proceso sea aleatorio, puesto que me ordena por peso como lo puedes ver en el order by que utilizo linea abajo, lo que deseo es poner ese order by aleatorio, no deseo que los galpones se cotejen seguidos:
procedure procesarcotejo(por)
set deleted on
delete from partidas2
select a.id_torneo,b.id_gallo,b.id_galpon, b.peso, b.peso_l, b.nombre,;
a.seleccionado,b.característica,;
int((peso-int(peso))*100) diferencia, g.representa;
from gallos b, competidores a, galpón g;
where a.id_torneo = por;
and b.id_gallo=a.id_gallo;
and a.seleccionado =.f.;
and b.id_galpon
= g.id_galpon;
order by b.peso;
into cursor espejo
select * from espejo into cursor espejo10
select a.id_torneo,;
a.id_gallo gallo_a,
a.peso peso_a, 0.00 punto_a, 0.00 tiempo_a,;
a.representa galpon_a,b.id_gallo gallo_b, b.peso peso_b,;
0.00 punto_b, 0.00 tiempo_b, b.representa
galpon_b;
,abs(int((b.peso - int(b.peso))*100) - a.diferencia) dife;
,'00000' ganador, 'pendiente' estado;
from espejo a, espejo10 b;
where b.id_gallo
<> a.id_gallo;
and alltrim(b.representa)
<> alltrim(a.representa);
and int(b.peso) = int(a.peso);
and abs(int((b.peso - int(b.peso))*100) - a.diferencia) <= 1;
and abs(int((a.peso - int(a.peso))*100) - b.diferencia)
<= 1;
order by a.peso;
into table pendientes
**
select * from pendientes into table pendientes2
**======================================================================**
** cotejamos los gallos **
**======================================================================**
select pendientes
**
if reccount() > 1 then
**
select pendientes
**
scan
torneo = pendientes.id_torneo
galloa = pendientes.gallo_a
pesoa = pendientes.peso_a
puntoa = pendientes.punto_a
tiempoa= pendientes.tiempo_a
galpona= pendientes.galpon_a
gallob = pendientes.gallo_b
pesob = pendientes.peso_b
puntob = pendientes.punto_b
tiempob= pendientes.tiempo_b
galponb= pendientes.galpon_b
difere = pendientes.dife
gana = pendientes.ganador
estados= pendientes.estado
**
select count(id_torneo) cantidades;
from partidas2;
where gallo_a = galloa;
or gallo_a = gallob;
or gallo_b = gallob;
or gallo_b = galloa;
into cursor validaciones
**
select validaciones
**
if validaciones.cantidades < 1
insert into partidas2 (id_torneo,gallo_a,peso_a,punto_a,;
tiempo_a,galpon_a,gallo_b,peso_b,punto_b,tiempo_b,;
galpon_b,dife,ganador,estado,apto);
values (torneo, galloa, pesoa, puntoa,
tiempoa, galpona,;
gallob, pesob, puntob, tiempob, galponb,;
difere, '', estados,1)
**
insert into partidas (id_torneo,gallo_a,peso_a,punto_a,;
tiempo_a,galpon_a,gallo_b,peso_b,punto_b,tiempo_b,;
galpon_b,dife,ganador,estado,apto);
values (torneo, galloa, pesoa, puntoa,
tiempoa, galpona,;
gallob, pesob, puntob, tiempob, galponb,;
difere, '', estados,1)
endif
endscan
else
messagebox('no hay cantidad gallos suficiente para la pelea')
endif
**=======================================================================**
** fin de la función **
**=======================================================================**
endfunc

2. Si no es posible realizar la operación anterior, te muestro la estructura que utilizo para mostrarlo en mi reporte, podría darse aquí la opción aleatoria o el orden aleatorio?, bueno para poder describir utilizo funciones pero creo que no es necesario ponerlas aqui puesto que esta entendible cierto?.:

SELECT a.id_torneo, a.nombre, a.fech_fin, a.fech_ini, a.estado,;
b.peso_a, b.peso_b, b.gallo_a, buscarcaract(b.gallo_a) name_car, buscarGallo(b.gallo_a) name_a, b.galpon_a,;
b.gallo_b, buscarcaract(b.gallo_b) name_ca,buscarGallo(b.gallo_b) name_b, buscarGalponA(b.gallo_a) name_x, b.galpon_b,;
b.ganador, buscarGallo(b.ganador) name_g, buscarGalponA(b.gallo_b) name_y, b.estado,;
pesito(b.gallo_a) pesitoA, pesito(b.gallo_b) pesitoB;
FROM torneos a, partidas b;
WHERE a.id_torneo = b.id_torneo;
INTO CURSOR REPORTE_PARTIDAS
REPORT FORM rpt_partidas preview

gracias...!!

este es mi correo por favor necesito su ayuda gracias

1 Respuesta

Respuesta

Jajaja el código es interesante por lo que leí o entendí creas un cursor espejo y lo comparas con otro de los mismos para buscarles pareja para pelear pero pelean seguido gallos por están ordenados es eso?

En efecto si, creo un espejo a cotejar pero muchas gracias por tu atención el código se de aumento para lo aleatorio solo era el siguiente:

SELECT Int(Rand()*1000), a.id_torneo, a.nombre, a.fech_fin, a.fech_ini, a.estado,;

FROM
torneos a, partidas b;
WHERE a.id_torneo = b.id_torneo;
Order By 1;
INTO CURSOR REPORTE_PARTIDAS
REPORT FORM rpt_partidas preview

Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas