reordenar registro numérico sin huecos

07/07/2006 - 09:21 por ***Joselitux*** | Informe spam
Hola

Tengo una tabla que almacena pedidos y además de un número único de pedido
tengo un número ordinal que no puede dejar huecos. Pero claro, si el cliente
cancela un pedido queda un hueco. Quiero renumerar ese número con un SQL en
vez de hacerlo por código, si es posible sin un cursor.

Ejemplo

CLIENTE ORDINAL_pedido
manolo 1
manolo 2
juan 1
juan 2
manolo 3
pedro 1
pedro 2
juan 3
manolo 4

Si Manolo elimina su pedido 3 habría un salto del 2 al 4 y lo que quiero es
que los pedidos de manolo se renumeren y queden sin huecos.

algún consejo?


Gracias mil

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
07/07/2006 - 14:38 | Informe spam
Maxi,

La columna [ORDINAL_pedido] no usa propiedad identity. La columna con
propiedad identity es [ID]. Eso es lo que Joselitux le dice a Carlos en su
segundo mensaje.

En la solución que recomiendas, tambien pueden quedar huecos si es que se
eliminan filas.


AMB

"Maxi" wrote:

Hola, esto sucede porque estas usando identities y no es recomendado para
estas cosas:

Te paso un ejemplo de como podes numerar sin identities

http://www.microsoft.com/spanish/ms...art187.asp


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"***Joselitux***" escribió en el mensaje
news:
>
> Hola
>
> Tengo una tabla que almacena pedidos y además de un número único de pedido
> tengo un número ordinal que no puede dejar huecos. Pero claro, si el
> cliente cancela un pedido queda un hueco. Quiero renumerar ese número con
> un SQL en vez de hacerlo por código, si es posible sin un cursor.
>
> Ejemplo
>
> CLIENTE ORDINAL_pedido
> manolo 1
> manolo 2
> juan 1
> juan 2
> manolo 3
> pedro 1
> pedro 2
> juan 3
> manolo 4
>
> Si Manolo elimina su pedido 3 habría un salto del 2 al 4 y lo que quiero
> es que los pedidos de manolo se renumeren y queden sin huecos.
>
> algún consejo?
>
>
> Gracias mil
>



Respuesta Responder a este mensaje
#7 Maxi
07/07/2006 - 15:32 | Informe spam
Hola,

En la solución que recomiendas, tambien pueden quedar huecos si es que se
eliminan filas.




Eso depende como lo implementes, al ser una tabla tenes mas control

Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Alejandro Mesa" escribió en el
mensaje news:
Maxi,

La columna [ORDINAL_pedido] no usa propiedad identity. La columna con
propiedad identity es [ID]. Eso es lo que Joselitux le dice a Carlos en su
segundo mensaje.

En la solución que recomiendas, tambien pueden quedar huecos si es que se
eliminan filas.


AMB

"Maxi" wrote:

Hola, esto sucede porque estas usando identities y no es recomendado para
estas cosas:

Te paso un ejemplo de como podes numerar sin identities

http://www.microsoft.com/spanish/ms...art187.asp


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"***Joselitux***" escribió en el mensaje
news:
>
> Hola
>
> Tengo una tabla que almacena pedidos y además de un número único de
> pedido
> tengo un número ordinal que no puede dejar huecos. Pero claro, si el
> cliente cancela un pedido queda un hueco. Quiero renumerar ese número
> con
> un SQL en vez de hacerlo por código, si es posible sin un cursor.
>
> Ejemplo
>
> CLIENTE ORDINAL_pedido
> manolo 1
> manolo 2
> juan 1
> juan 2
> manolo 3
> pedro 1
> pedro 2
> juan 3
> manolo 4
>
> Si Manolo elimina su pedido 3 habría un salto del 2 al 4 y lo que
> quiero
> es que los pedidos de manolo se renumeren y queden sin huecos.
>
> algún consejo?
>
>
> Gracias mil
>



Respuesta Responder a este mensaje
#8 Alejandro Mesa
07/07/2006 - 16:29 | Informe spam
Maxi,

Eso depende como lo implementes, al ser una tabla tenes mas control



No se a que te refieres con el planteamiento anterior. La tabla de donde
tomas el ultimo no tiene incidencia alguna en como se reorganize la tabla que
contiene la columna [ORDINAL_pedido], incluso si el ultimo valor para
[ORDINAL_pedido] es tomado desde la tabla que recomiendas.

Pero bueno, tus razones tendras para apoyar el planteamiento. Seria de mucha
ayuda para nosotros si nos pasas algun link o nos muestras algun ejemplo de
donde podramos aprender.


AMB


"Maxi" wrote:

Hola,

> En la solución que recomiendas, tambien pueden quedar huecos si es que se
> eliminan filas.
>

Eso depende como lo implementes, al ser una tabla tenes mas control

Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Alejandro Mesa" escribió en el
mensaje news:
> Maxi,
>
> La columna [ORDINAL_pedido] no usa propiedad identity. La columna con
> propiedad identity es [ID]. Eso es lo que Joselitux le dice a Carlos en su
> segundo mensaje.
>
> En la solución que recomiendas, tambien pueden quedar huecos si es que se
> eliminan filas.
>
>
> AMB
>
> "Maxi" wrote:
>
>> Hola, esto sucede porque estas usando identities y no es recomendado para
>> estas cosas:
>>
>> Te paso un ejemplo de como podes numerar sin identities
>>
>> http://www.microsoft.com/spanish/ms...art187.asp
>>
>>
>> Salu2
>> Maxi [MVP SQL SERVER]
>> www.sqlgurus.org
>>
>>
>> "***Joselitux***" escribió en el mensaje
>> news:
>> >
>> > Hola
>> >
>> > Tengo una tabla que almacena pedidos y además de un número único de
>> > pedido
>> > tengo un número ordinal que no puede dejar huecos. Pero claro, si el
>> > cliente cancela un pedido queda un hueco. Quiero renumerar ese número
>> > con
>> > un SQL en vez de hacerlo por código, si es posible sin un cursor.
>> >
>> > Ejemplo
>> >
>> > CLIENTE ORDINAL_pedido
>> > manolo 1
>> > manolo 2
>> > juan 1
>> > juan 2
>> > manolo 3
>> > pedro 1
>> > pedro 2
>> > juan 3
>> > manolo 4
>> >
>> > Si Manolo elimina su pedido 3 habría un salto del 2 al 4 y lo que
>> > quiero
>> > es que los pedidos de manolo se renumeren y queden sin huecos.
>> >
>> > algún consejo?
>> >
>> >
>> > Gracias mil
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#9 Maxi
07/07/2006 - 18:34 | Informe spam
Ale, lo que yo digo es esto: vos tenes una tabla numeradora donde da el
proximo numero, si borrar un comprobante te queda ese espacio, supongamos
(1,2,3) borro el 2 entonces cuando hago uno nuevo me hace el 4 por mas q lo
hagas con identity o no.
Yo lo que digo es: como no usas identities y vos le estas pasando el valor
del comprobante entonces:
Podes tener otra tabla mas de comprobantes eliminados y a asignar ordenados
por numero, entonces tu logica de creacion del comprobante primero va a esa
tabla a ver si debe asignar un numero q ya se borro y si no tiene nada q
asignar entonces a la numeradora. Yo lo he implementado asi y nunca he
tenido problemas, si usas identities tambien lo podrias hacer forzando el
valor de ese campo con SET IDENTITY_INSERT

Espero que se comprenda :s



Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Alejandro Mesa" escribió en el
mensaje news:
Maxi,

Eso depende como lo implementes, al ser una tabla tenes mas control



No se a que te refieres con el planteamiento anterior. La tabla de donde
tomas el ultimo no tiene incidencia alguna en como se reorganize la tabla
que
contiene la columna [ORDINAL_pedido], incluso si el ultimo valor para
[ORDINAL_pedido] es tomado desde la tabla que recomiendas.

Pero bueno, tus razones tendras para apoyar el planteamiento. Seria de
mucha
ayuda para nosotros si nos pasas algun link o nos muestras algun ejemplo
de
donde podramos aprender.


AMB


"Maxi" wrote:

Hola,

> En la solución que recomiendas, tambien pueden quedar huecos si es que
> se
> eliminan filas.
>

Eso depende como lo implementes, al ser una tabla tenes mas control

Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Alejandro Mesa" escribió en el
mensaje news:
> Maxi,
>
> La columna [ORDINAL_pedido] no usa propiedad identity. La columna con
> propiedad identity es [ID]. Eso es lo que Joselitux le dice a Carlos en
> su
> segundo mensaje.
>
> En la solución que recomiendas, tambien pueden quedar huecos si es que
> se
> eliminan filas.
>
>
> AMB
>
> "Maxi" wrote:
>
>> Hola, esto sucede porque estas usando identities y no es recomendado
>> para
>> estas cosas:
>>
>> Te paso un ejemplo de como podes numerar sin identities
>>
>> http://www.microsoft.com/spanish/ms...art187.asp
>>
>>
>> Salu2
>> Maxi [MVP SQL SERVER]
>> www.sqlgurus.org
>>
>>
>> "***Joselitux***" escribió en el mensaje
>> news:
>> >
>> > Hola
>> >
>> > Tengo una tabla que almacena pedidos y además de un número único de
>> > pedido
>> > tengo un número ordinal que no puede dejar huecos. Pero claro, si el
>> > cliente cancela un pedido queda un hueco. Quiero renumerar ese
>> > número
>> > con
>> > un SQL en vez de hacerlo por código, si es posible sin un cursor.
>> >
>> > Ejemplo
>> >
>> > CLIENTE ORDINAL_pedido
>> > manolo 1
>> > manolo 2
>> > juan 1
>> > juan 2
>> > manolo 3
>> > pedro 1
>> > pedro 2
>> > juan 3
>> > manolo 4
>> >
>> > Si Manolo elimina su pedido 3 habría un salto del 2 al 4 y lo que
>> > quiero
>> > es que los pedidos de manolo se renumeren y queden sin huecos.
>> >
>> > algún consejo?
>> >
>> >
>> > Gracias mil
>> >
>>
>>
>>



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