Numeros faltantes

714 views
Skip to first unread message

Baltazar Moreno

unread,
Jan 4, 2011, 5:30:30 PM1/4/11
to Comunidad de Visual Foxpro en Español
Que tal foro, como seria la instruccion SQL para saber que numeros
faltan en una tabla, por ejemplo:
Si en la tabla tengo:

FOLIO
-----------
1
2
4
5
7
8
10

El resultado esperado seria:
3,6,9

Gracias de antemano.

Ing.Daniel Bojorge

unread,
Jan 4, 2011, 5:33:45 PM1/4/11
to publice...@googlegroups.com
Yo hago algo parecido, pero no uso una instrucción SQL, sino que recorro toda la tabla (indexada u ordenada por el código a validar).

¿Para qué lo hago? para revisar que si hay un código de inventario no usado, pues usarlo :D


Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

Luis Maria Guayan

unread,
Jan 4, 2011, 6:55:17 PM1/4/11
to publice...@googlegroups.com
Una forma:

CREATE CURSOR Tempo (Id I)
FOR ln=1 to 10
  INSERT INTO Tempo (Id) VALUES (ln)
ENDFOR

SELECT * FROM Tempo WHERE Id NOT IN (SELECT Folio FROM MiTabla)


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

hu...@profind.com.ar

unread,
Jan 4, 2011, 6:59:21 PM1/4/11
to publice...@googlegroups.com
Y si tengo una tabla com 300.000 registros? :s

Enviado desde mi BlackBerry de Personal


From: Luis Maria Guayan <luis...@portalfox.com>
Date: Tue, 04 Jan 2011 20:55:17 -0300
Subject: Re: [vfp] Numeros faltantes

Luis Maria Guayan

unread,
Jan 4, 2011, 7:01:46 PM1/4/11
to publice...@googlegroups.com
FOR ln=1 to 300000 && :-)

Luis Mar�a Guay�n
Tucum�n, Argentina


_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 04/01/2011 20:59, hu...@profind.com.ar escribi�:
Y si tengo una tabla com 300.000 registros? :s

Enviado desde mi BlackBerry de Personal


From: Luis Maria Guayan <luis...@portalfox.com>
Date: Tue, 04 Jan 2011 20:55:17 -0300
Subject: Re: [vfp] Numeros faltantes

Una forma:

CREATE CURSOR Tempo (Id I)
FOR ln=1 to 10
� INSERT INTO Tempo (Id) VALUES (ln)

ENDFOR

SELECT * FROM Tempo WHERE Id NOT IN (SELECT Folio FROM MiTabla)


Luis Mar�a Guay�n
Tucum�n, Argentina


_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 04/01/2011 19:30, Baltazar Moreno escribi�:

Baltazar Moreno

unread,
Jan 4, 2011, 7:04:09 PM1/4/11
to Comunidad de Visual Foxpro en Español
Ok entendido jaja..

Gracias!

On 4 ene, 18:01, Luis Maria Guayan <luisma...@portalfox.com> wrote:
> FOR ln=1 to 300000 && :-)
>
> Luis Mar a Guay n
> Tucum n, Argentina
> _________________________http://www.PortalFox.com
> Nada corre como un zorro
> _________________________
>
>
> El 04/01/2011 20:59,hu...@profind.com.arescribi :Y si tengo una tabla com 300.000 registros? :s
>
> Enviado desde mi BlackBerry de Personal
>
> From:Luis Maria Guayan<luis...@portalfox.com>
>
> Sender:publice...@googlegroups.com
>
> Date:Tue, 04 Jan 2011 20:55:17 -0300
>
> To:<publice...@googlegroups.com>
>
> ReplyTo:publice...@googlegroups.com
>
> Subject:Re: [vfp] Numeros faltantes
>
>
>
> Una forma:
> CREATE CURSOR Tempo (Id I)
> FOR ln=1 to 10
> INSERT INTO Tempo (Id) VALUES (ln)
> ENDFOR
> SELECT * FROM Tempo WHERE Id NOT IN (SELECT Folio FROM MiTabla)
>
> Luis Mar a Guay n
> Tucum n, Argentina
> _________________________http://www.PortalFox.com
> Nada corre como un zorro
> _________________________
>
>
> El 04/01/2011 19:30, Baltazar Moreno escribi :Que tal foro, como seria la instruccion SQL para saber que numeros faltan en una tabla, por ejemplo: Si en la tabla tengo: FOLIO ----------- 1 2 4 5 7 8 10 El resultado esperado seria: 3,6,9 Gracias de antemano.

hu...@profind.com.ar

unread,
Jan 4, 2011, 7:05:37 PM1/4/11
to publice...@googlegroups.com
Jaja ... Asi no hay ram q aguante...

Enviado desde mi BlackBerry de Personal


From: Luis Maria Guayan <luis...@portalfox.com>
Date: Tue, 04 Jan 2011 21:01:46 -0300
Subject: Re: [vfp] Numeros faltantes

FOR ln=1 to 300000 && :-)

Luis María Guayán
Tucumán, Argentina


_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 04/01/2011 20:59, hu...@profind.com.ar escribió:
Y si tengo una tabla com 300.000 registros? :s

Enviado desde mi BlackBerry de Personal


From: Luis Maria Guayan <luis...@portalfox.com>
Date: Tue, 04 Jan 2011 20:55:17 -0300
Subject: Re: [vfp] Numeros faltantes

Una forma:

CREATE CURSOR Tempo (Id I)
FOR ln=1 to 10
  INSERT INTO Tempo (Id) VALUES (ln)
ENDFOR

SELECT * FROM Tempo WHERE Id NOT IN (SELECT Folio FROM MiTabla)


Luis María Guayán
Tucumán, Argentina


_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Hugo C.

unread,
Jan 4, 2011, 7:22:46 PM1/4/11
to Comunidad de Visual Foxpro en Español
Intenta algo asi :

* Folio maximo
SELECT MAX(Folio);
FROM Folios;
INTO ARRAY laMaxFolio

* Llenar cursor temporal con todos los folios
CREATE CURSOR FoliosTmp (nFolio I)
FOR lnI = 1 TO laMaxFolio(1)
INSERT INTO FoliosTmp VALUES(lnI)
ENDFOR

* Cuales faltan
SELECT nFolio;
FROM FoliosTmp;
WHERE NOT nFolio IN (SELECT Folio FROM Folios)

Saludos.

Baltazar Moreno

unread,
Jan 4, 2011, 7:51:56 PM1/4/11
to Comunidad de Visual Foxpro en Español
Ese era mi temor, porque ahorita lo que hago es una query a la tabla
que tiene los datos, y la recorro con un scan/end scan buscando alguna
inconsistencia, es lento, pero no me consumiría tanta ram solo la que
la query me regrese.

De esta manera con el for, me consume ademas de la memoria que me
gasta el cursor que hace la query, todo un buen de memoria para hacer
ese cursor temporal..

¿Que es lo más optimo?


Gracias por sus comentarios.

On 4 ene, 18:05, h...@profind.com.ar wrote:
> Jaja ... Asi no hay ram q aguante...
> Enviado desde mi BlackBerry de Personal
>
>
>
>
>
>
>
> -----Original Message-----
> From: Luis Maria Guayan <luisma...@portalfox.com>
>
> Sender: publice...@googlegroups.com
> Date: Tue, 04 Jan 2011 21:01:46
> To: <publice...@googlegroups.com>
> Reply-To: publice...@googlegroups.com
> Subject: Re: [vfp] Numeros faltantes
>
> FOR ln=1 to 300000 && :-)
>
> Luis María Guayán
>  Tucumán, Argentina
>  _________________________
>  http://www.PortalFox.com
>  Nada corre como un zorro
>  _________________________
>  El 04/01/2011 20:59, h...@profind.com.ar <mailto:h...@profind.com.ar>  escribió: Y si tengo una tabla com 300.000 registros? :s
> Enviado desde mi BlackBerry de Personal
> ----------------

Luis Maria Guayan

unread,
Jan 4, 2011, 8:09:05 PM1/4/11
to publice...@googlegroups.com
El consumo de memoria es mínimo, el cursor se escribe físicamente en disco


CREATE CURSOR Tempo (Id I)
FOR ln=1 to 300000

  INSERT INTO Tempo (Id) VALUES (ln)
ENDFOR
? DBF("Tempo")

Si te fijas en el Administrador de Tareas, el cursor con 300000 registros tiene un consumo de memoria de menos de 2 MB.

Una vez realizado el SELECT con un :

USE IN SELECT("Tempo") cierras el cursor y listo

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


Henry Martinez

unread,
Jan 6, 2011, 9:27:19 PM1/6/11
to publice...@googlegroups.com
Lo mas sencillo es que hagas un barrido por el campo que estas verificando.

el codigo seria el siguiente:


****** inicio

use datos alias se order tag cod_sec
select se
go top
if not eof()
tx=se.cod_sec
skip
do while not eof()
if se.cod_sec-tx>1
for x=tx+1 to se.cod_sec-1
?x
next
endif
skip
tx=se.cod_se
enddo
endif
****** fin

De un solo barrido encontrarias todos los que faltan

Saludos

Henry Mart�nez Flores
Sistema Administrativo Moises 2.0
Mov�l: 593-89865854 (Porta)
Oficina: 593-4-2826901
Guayaquil-Ecuador

El 04/01/2011 en 17:30, Baltazar Moreno <bmor...@gmail.com> escribi�:


>Que tal foro, como seria la instruccion SQL para saber que numeros
>faltan en una tabla, por ejemplo:
>Si en la tabla tengo:
>
>FOLIO
>-----------
>1
>2
>4
>5
>7
>8
>10
>
>El resultado esperado seria:
>3,6,9
>
>Gracias de antemano.
>


--
Mail created using EssentialPIM Free - www.essentialpim.com


ibania blanco

unread,
Jan 10, 2011, 5:58:46 PM1/10/11
to Comunidad de Visual Foxpro en Español
no pongas en duda el codigo del maestro, ejecutar una a ejecutar 15,
no puede ser


On 6 ene, 20:27, Henry Martinez <henrymartinezflo...@hotmail.com>
wrote:
> El 04/01/2011 en 17:30, Baltazar Moreno <bmore...@gmail.com> escribi :
>
>
>
>
>
> >Que tal foro, como seria la instruccion SQL para saber que numeros
> >faltan en una tabla, por ejemplo:
> >Si en la tabla tengo:
>
> >FOLIO
> >-----------
> >1
> >2
> >4
> >5
> >7
> >8
> >10
>
> >El resultado esperado seria:
> >3,6,9
>
> >Gracias de antemano.
>
> --
> Mail created using EssentialPIM Free -www.essentialpim.com- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -
Reply all
Reply to author
Forward
0 new messages