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. 


         

         

     

Responder a