Buscar ultimo numero sin usar

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Y preguntar por el máximo así a lo bruto?
 

GORDIO

Tatita del Ritmo
Se incorporó
30 Agosto 2005
Mensajes
2.097
Si hago eso(pedir el max) me va a devolver el 89992, pero la cosa es que necesito los numeros que estan entremedio que no se usaron. EJ:
Nclie # RUT
10000 # 1-9
10001 # 2-7
10002 # 3-5
10007 # 4-6

yo necesito llegar al 10003 pa asignarlo y asi ir tapando las lagunas.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ah oks, te cacho.
Puta, lo único que se me ocurre es crear una función.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Pero si eso número es clave principal y le pones auto incremento se saltará los que ya existen
Lo que yo entiendo es que quiere ocupar esos números intermedios no utilizados.
Así con una pura query no se me ocurre nada, salvo crear una función que busque menor numero disponible.
 
Upvote 0

juliux

Goma Espuminglish!!!
Se incorporó
11 Marzo 2005
Mensajes
497
Por una sola vez hacer un recorrido completo de la tabla. Los números disponibles llevarlos a una tabla auxiliar.
Luego al crear un nuevo cliente le asignas el número menor que esté en esa tabla auxiliar... Una vez creado el cliente borras el número de la tabla auxiliar.
O es muy tonto lo que estoy diciendo?

Enviado desde mi GT-S7500L usando Tapatalk 2
 
Upvote 0

Matjazz

asdf
Se incorporó
18 Agosto 2007
Mensajes
1.196
Por una sola vez hacer un recorrido completo de la tabla. Los números disponibles llevarlos a una tabla auxiliar.
Luego al crear un nuevo cliente le asignas el número menor que esté en esa tabla auxiliar... Una vez creado el cliente borras el número de la tabla auxiliar.
O es muy tonto lo que estoy diciendo?

Enviado desde mi GT-S7500L usando Tapatalk 2

si no sirve (aunque no lo he probado) la solucion que plantié antes de ponerle autoincremento, esta es la unica solucion.

Acuerdate que en mysql existe la funcion MIN(Nclie) y tambien MAX(Nclie).

Y tendrias que separarlo en dos consultas, una de seleccion y otra de eliminacion
 
Upvote 0

GORDIO

Tatita del Ritmo
Se incorporó
30 Agosto 2005
Mensajes
2.097
Por una sola vez hacer un recorrido completo de la tabla. Los números disponibles llevarlos a una tabla auxiliar.
Luego al crear un nuevo cliente le asignas el número menor que esté en esa tabla auxiliar... Una vez creado el cliente borras el número de la tabla auxiliar.
O es muy tonto lo que estoy diciendo?

Enviado desde mi GT-S7500L usando Tapatalk 2

Igual no es mala idea.

de hecho me gusto, por que me implica que se hace la pega grande una vez y luego en uso habitual solo un select min (nclie) from nclie_aux

Gracias !
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Por una sola vez hacer un recorrido completo de la tabla. Los números disponibles llevarlos a una tabla auxiliar.
Luego al crear un nuevo cliente le asignas el número menor que esté en esa tabla auxiliar... Una vez creado el cliente borras el número de la tabla auxiliar.
O es muy tonto lo que estoy diciendo?

Enviado desde mi GT-S7500L usando Tapatalk 2

También es opción lo de la tabla auxiliar.
 
Upvote 0

GORDIO

Tatita del Ritmo
Se incorporó
30 Agosto 2005
Mensajes
2.097
No creo que llegemos a tener mas de 99999 clientes, porque somos una empresa de ambito nacional noma.

Ademas de que la longintud del nclie nos la dio el SII en las especificaciones de los archivos que piden, asi que aunque quisiera no puedo llegar y agrandar el campo.

lo que no logro entender todavia es por que no se usan los nclie de manera ordenada.

Grax por las respuestas.
 
Upvote 0

adv

Fanático
Se incorporó
24 Marzo 2005
Mensajes
1.415
Si ese es el caso, conviene más la tabla auxiliar, o bien llenar con el correlativo de los números no utilizados y dejando el RUT en valor nulo
 
Upvote 0

Kensho

Buscando el norte
Se incorporó
16 Agosto 2006
Mensajes
1.475
Código:
SELECT  id + 1
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi 
        WHERE   mi.id = mo.id + 1
        )
ORDER BY
        id
LIMIT 1
 
Upvote 0
Subir