Estaba por proponer exactamente lo mismo
Porque no controlas al generar los numeros
Saludos
PabloC
----- Original Message -----
From: Mauricio Pistiner
To: gufa List Member
Sent: Thursday, January 04, 2007 4:06 PM
Subject: [gufa] Re: Re: [gufa] Re: Método para comparar filas
Que tal:
SI la generación de los 100000 numeros es al crear la tabla..
Generando las filas en cursor o tabla local o vista remota reflejada en
cursor local e indexando :
****************************
local aNums(15)
select numeros
index on str(num01)+str(num02)+...+str(num15) tag nums
for i=1 to 100000
wait nowait windows str(i)
* generar 15 numeros al azar...
for j=1 to 15
nNum(j) = generarnum()
endfor
* ordenar la secuencia...
ascan(aNums)
cExpr = ''
* armar expresion para buscar...
for j=1 to 15
cExpr=cExpr+str(aNums(j))
endfor
seek cExpr
if found()
* secuencia existente...
* reintentar...
else
INSERT INTO numeros values (aNums(1),aNums(2),..,aNums(15))
endif
endfor
********************************
saludos
Mauricio
El día 4/01/07, Consultas <[EMAIL PROTECTED]> escribió:
Gracias David y Feliz Año.
Lo que pasa es que yo no uso SQL Server, y es una tabla dbf de vfox que
contiene 100.000 filas de 15 numeros cada uno, para realizar un sorteo.
Lo que tengo que hacer es depurar aquellas filas que contengan los mismos
numeros, para borrarlas y asi descartarlas, para evitar los duplicados.
Yo lo que estoy probando y buscando es una manera de hacerlo rapido y
eficientemente, por eso hacia referencia a que si convenia revisar cada fila
haciendo un select-sql contra las demas filas para ver si existen filas
iguales, o si conviene usar un scan...endscan.
Espero que se entienda.
Saludos y Felicidades...
Emiliano Saldivia
Armstrong - Santa Fe
[EMAIL PROTECTED]
----- Original Message -----
From: David Brunstein
To: gufa List Member
Sent: Jueves 4 de Enero de 2007 15:18
Subject: [gufa] Re: Método para comparar filas
Hola Emiliano,
Que tal?
La respuesta depende como es que tenes que hacer la comparacion, que son
esos 15 numeros? Por que no tenes una sola columna con los 15 numeros?
Lo mejor para este tipo de cosas es mandarle el laburo al motor de base
de datos.
Me parece que 100.000 filas no deberia ser mucho laburo para un motor de
base de datos, como el SQL Sever; de todas formas, trataria las excepciones. Me
refiero a que si lo normal es que "alguno" de los 15 se repita, haria el WHERE
por equal; si lo normal es que la "mayoria" de los 15 se repita, haria el WHERE
por not equal.
Si metes los 15 numeros en una tabla (con 15 filas, en vez de 15
columnas) podrias hacer un SELECT con la clausula NOT IN SELECT o la clausula
IN SELECT (de nuevo lo que sea la excepcion).
Ahora, bien, si vos lo que tenes que hacer es eliminar los duplicados,
entonces directamente te conviene trabajar un SELECT hasta que te devuelve SOLO
las filas que tenes que borrar, y despues reemplazas la palabra SELECT por
DELETE. Con una sola sentencia SQL resolverias el asunto.
My 2 micro-cents.
Feliz 2007,
Davo.
On 1/4/07, Consultas <[EMAIL PROTECTED] > wrote:
Hola a todos. Estoy haciendo un programa en vfox para generar 15
numeros al azar, que los guardo en una tabla con 15 columnas.
Lo que necesito es buscar la forma de comparar estos grupos de 15
numeros, con otras filas, para evitar que existan grupos repetidos.
En total son 100.000 filas, y necesito saber de que manera puedo hacer
mas rapida la comparacion y depuracion. O sea, si tengo que usar alguna
sentencia Select SQL o armar un bloque de codigo con SCAN...ENDSCAN e ir
verificando las coincidencias.
Saludos.
Emiliano Saldivia
Armstrong (Sta. Fe)
[EMAIL PROTECTED]
------------------------------------------------------------------
avast! Antivirus: Mensaje saliente limpio.
Base de datos de Virus (VPS): 0701-0, 03/01/2007
Comprobado el: 04/01/2007 02:24:29 p.m.
avast! - copyright (c) 1988-2007 ALWIL Software.
--
=======================
David Brunstein
Java/PB/VFP Developer
Winnipeg, MB
Canada
Before I speak, I have something important to say.
Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer.
G.M.
----------------------------------------------------------------------
avast! Antivirus: Mensaje saliente limpio.
Base de datos de Virus (VPS): 0701-0, 03/01/2007
Comprobado el: 04/01/2007 03:37:07 p.m.
avast! - copyright (c) 1988-2007 ALWIL Software.