Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta complicada

Estas en el tema de Consulta complicada en el foro de SQL Server en Foros del Web. buen dia a todos, mi problema es el siguiente: tengo una tabla con 30,000 registros, entre otros campos hay 2, uno que se llama Consecutivo ...
  #1 (permalink)  
Antiguo 01/07/2008, 18:39
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Busqueda Consulta complicada

buen dia a todos, mi problema es el siguiente:
tengo una tabla con 30,000 registros, entre otros campos hay 2, uno que se llama Consecutivo y otro que se llama NumPagina , necesito actualizar el campo consecutivo al numero que le corresponde de registro de acuerdo a un orden osea 1,2,3,4,5, hasta el 30,000, al mismo tiempo actualizo el campo NumPagina con un numero consecutivos del 1 al 7500, al llegar al 7500 inicio nuevamente desde el 1 pero el consecutivo continua.
al final la tabla debe quedar asi

Consecutivo....NumPagina....otros campos
.................1....................1.....xxxxxxxxxxx
.................2....................2.....xxxxxxxxxxx
.................3....................3.....xxxxxxxxxxx
........................................................
........................................................
.............7499...............7499....xxxxxxxxxxx
.............7500...............7500....xxxxxxxxxxx
.............7501.....................1....xxxxxxxxxxx
.............7502.....................2....xxxxxxxxxxx
.............7503.....................3....xxxxxxxxxxx
........................................................
........................................................
..........29,999...............7499....xxxxxxxxxxxx
..........30,000...............7500....xxxxxxxxxxxx

En la tabla hay un campo tambien que se llama Folio, este campo es unico.
mi duda es Cual es la forma mas eficiente de hacer esta operacion? o como resolverian ustedes este problema.

De antemano gracias por sus comentarios
Saludos.
  #2 (permalink)  
Antiguo 01/07/2008, 18:50
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consulta complicada

¿Que datos tienen actualmente los campos (CONSECUTIVO y NUMPAGINA)?

Estas de acuerdo que SQL SERVER, NO tiene un numero de posicion en referencia a la entrada del registro????
  #3 (permalink)  
Antiguo 01/07/2008, 18:53
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Consulta complicada

Cita:
Iniciado por iislas Ver Mensaje
¿Que datos tienen actualmente los campos (CONSECUTIVO y NUMPAGINA)?
los campos CONSECUTIVO y NUMPAGINA tienen CERO

Cita:
Iniciado por iislas Ver Mensaje
Estas de acuerdo que SQL SERVER, NO tiene un numero de posicion en referencia a la entrada del registro????
asi es, los registros se ordenarian de acuerdo al campo FOLIO
  #4 (permalink)  
Antiguo 02/07/2008, 09:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consulta complicada

ok, mencionas que hay un campo FOLIO, que servira para ordenar las registros, ¿de que tipo es?, ¿que contiene?
  #5 (permalink)  
Antiguo 02/07/2008, 09:54
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Consulta complicada

Cita:
Iniciado por iislas Ver Mensaje
ok, mencionas que hay un campo FOLIO, que servira para ordenar las registros, ¿de que tipo es?, ¿que contiene?
el folio es Alfanumerico, los primerios 4 caracteres son letras y el resto son numeros, se debe ordenar tomando en cuenta este folio pero este no es consecutivo, ejemplo Qfca1200, Qfca1201, Qfca1250, Qfca1260.
  #6 (permalink)  
Antiguo 02/07/2008, 16:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consulta complicada

Bueno, entonces, digame si le funciona el siguiente query

create table #paso (folio varchar(50) primary key)
insert into #paso
select folio from tutabla
declare @folio varchar(50)
declare @consecutivo int
declare @numpagina int
set @consecutivo = 1
set @consecutivo = 1
while exists(select folio from #paso)
begin
select top 1 @folio = folio from tutabla order by folio
update tutabla set consecutivo = @consecutivo, numpagina = @numpagina
where folio = @folio
delete #paso where folio = @folio
set @consecutivo = @consecutivo + 1
set @numpagina = @numpagina + 1
if @numpagina > 7500
set @numpagina = 1
continue
end
  #7 (permalink)  
Antiguo 03/07/2008, 10:43
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Consulta complicada

Muchas gracias iislas

si me funciono la consulta unicamente en el renglon select top 1 @folio = folio from tutabla order by folio, cambie tutabla por #paso pero lo demas perfecto.

Gracias...
  #8 (permalink)  
Antiguo 03/07/2008, 11:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consulta complicada

cierto, gracias por la observacion.

Que bien que ha funcionado el codigo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:58.