Encontrar huecos en secuencia.

14/03/2008 - 13:35 por Tomas | Informe spam
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me encuentre
el primer hueco disponible para poder utilizar el código que le corresponda
por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el 4,
en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.

Preguntas similare

Leer las respuestas

#1 Rolando
14/03/2008 - 14:23 | Informe spam
Si es para que se llenen solo una vez, lo que deberias es guardar el numero
del primer hueco e irlo actualizando buscando el proximo con un if
exists(select..) dentro de un while.

Pero si es que que al azar se vuelven a crear nuevos huecos eso tendrias que
hacerlo contando desde el 1 pero eso debe ser extremadamente ineficiente.
No seria malo que revisaras ese diseño a ver si evitas eso de todos modos,
quiza teniendo otro campo para esa clave.


"Tomas" escribió en el mensaje
news:%23hopm$
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me encuentre
el primer hueco disponible para poder utilizar el código que le
corresponda por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el 4,
en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.

Respuesta Responder a este mensaje
#2 Jesús López
14/03/2008 - 16:29 | Informe spam
Encontrar el primer hueco:

SELECT TOP( 1 ) Id + 1 As PrimerHueco
FROM Tabla T
WHERE NOT EXISTS( SELECT * FROM Tabla WHERE Id = T.Id + 1)

Saludos:

Jesús López
www.solidq.com


"Tomas" escribió en el mensaje
news:%23hopm$
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me encuentre
el primer hueco disponible para poder utilizar el código que le
corresponda por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el 4,
en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.

Respuesta Responder a este mensaje
#3 Tomas
17/03/2008 - 10:06 | Informe spam
EXACTO, esto es lo que buscaba y no terminaba de ver la forma de hacerlo.

Gracias.

"Jesús López" escribió en el
mensaje news:%
Encontrar el primer hueco:

SELECT TOP( 1 ) Id + 1 As PrimerHueco
FROM Tabla T
WHERE NOT EXISTS( SELECT * FROM Tabla WHERE Id = T.Id + 1)

Saludos:

Jesús López
www.solidq.com


"Tomas" escribió en el mensaje
news:%23hopm$
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me
encuentre el primer hueco disponible para poder utilizar el código que le
corresponda por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el
4, en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.





Respuesta Responder a este mensaje
#4 Tomas
17/03/2008 - 10:16 | Informe spam
No es un problema de diseño.
Es un problema puntual, para resolver una cosa concreta y no volverme loco
buscando los huecos.


"Rolando" escribió en el mensaje
news:
Si es para que se llenen solo una vez, lo que deberias es guardar el
numero del primer hueco e irlo actualizando buscando el proximo con un if
exists(select..) dentro de un while.

Pero si es que que al azar se vuelven a crear nuevos huecos eso tendrias
que hacerlo contando desde el 1 pero eso debe ser extremadamente
ineficiente.
No seria malo que revisaras ese diseño a ver si evitas eso de todos modos,
quiza teniendo otro campo para esa clave.


"Tomas" escribió en el mensaje
news:%23hopm$
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me
encuentre el primer hueco disponible para poder utilizar el código que le
corresponda por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el
4, en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.





Respuesta Responder a este mensaje
#5 Rolando
17/03/2008 - 12:20 | Informe spam
Si ahora lo tienes como un problema, obviamente es un problema de diseño,
sino no lo tuvieras.

Seguro que ahora cambiarás el "diseño" para que no te vuelva a pasar.

Y no hay que volverse loco, solo cambiar el diseño y punto.


"Tomas" escribió en el mensaje
news:O8kLj%
No es un problema de diseño.
Es un problema puntual, para resolver una cosa concreta y no volverme loco
buscando los huecos.


"Rolando" escribió en el mensaje
news:
Si es para que se llenen solo una vez, lo que deberias es guardar el
numero del primer hueco e irlo actualizando buscando el proximo con un
if exists(select..) dentro de un while.

Pero si es que que al azar se vuelven a crear nuevos huecos eso tendrias
que hacerlo contando desde el 1 pero eso debe ser extremadamente
ineficiente.
No seria malo que revisaras ese diseño a ver si evitas eso de todos
modos, quiza teniendo otro campo para esa clave.


"Tomas" escribió en el mensaje
news:%23hopm$
Hola a todos.

Tengo una tabla, con una clave principal única.
Se han creado códigos como 1,2,3,5,9 ... etc.
Necesito rellenar los huecos y tengo que hacer una rutina que me
encuentre el primer hueco disponible para poder utilizar el código que
le corresponda por orden.
Para el ejemplo anterior, debería encontrar el 4. Cuando esté creado el
4, en la siguiente búsqueda debería detectar el 6 y así sucesivamente.

¿Alquien sabe cómo se podría plantear esta búsqueda?

Gracias por anticipado.

Saludos.
Tomás.









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida