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

[SOLUCIONADO] Número consecutivo

Estas en el tema de Número consecutivo en el foro de Mysql en Foros del Web. Hola a todos, mis conocimientos en MySql no son todo lo amplio que me gustaría, así que tengo que recurrir a este foro, mi pregunta ...
  #1 (permalink)  
Antiguo 16/05/2014, 00:30
Avatar de coloradocanyon  
Fecha de Ingreso: marzo-2009
Ubicación: Reino de Granada
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 0
Número consecutivo

Hola a todos, mis conocimientos en MySql no son todo lo amplio que me gustaría, así que tengo que recurrir a este foro, mi pregunta es muy sencilla y seguro que se les ha dado a mas de uno de los foreros.

Tengo una tabla que ya tiene contenido, n registros, necesito actualizar un campo, numérico, con un número consecutivo.

un saludo y gracias....
  #2 (permalink)  
Antiguo 16/05/2014, 01:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Número consecutivo

No es necesario

Supongamos que tu tabla tiene un id autonumerico, que como habras visto no siempre es consecutivo, y otro campo con un nombre. Si queremos un numerador consecutivo segun el orden de inserción de los registros hacemos

Código MySQL:
Ver original
  1. SET @a = 0;
  2. SELECT  id,nombre, @a:=@a+1 orden
  3. FROM TuTabla

si que remos el numerador consecutivo segun el orden alfabetico de los nombres

Código MySQL:
Ver original
  1. SET @a = 0;
  2. SELECT  id,nombre, @a:=@a+1 orden
  3. FROM TuTabla
  4. ORDER BY nombre;

Si no importa el orden de los registros

Código MySQL:
Ver original
  1. SET @a = 0;
  2. SELECT  id,nombre, @a:=@a+1 orden
  3. FROM TuTabla;

Ojo que no siempre saldran en el mismo orden.


Ese numerador lo puedes mostrar siempre que quieras aun que no este guardado en la tabla.

La ventaja de hacerlo así es que cuando elimines algun registro no tendras que recalcular nada, puesto que no hay nada.

No cometas el error de confundir ese numerador con el identificador del registro, este debe ser fijo, inmutable, por lo que dejaria de ser consecutivo en el momento que elimines algun registro.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 16/05/2014 a las 01:21
  #3 (permalink)  
Antiguo 19/05/2014, 01:34
Avatar de coloradocanyon  
Fecha de Ingreso: marzo-2009
Ubicación: Reino de Granada
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Número consecutivo

Hola, te agradezco tu ayuda, pero el problema lo sigo teniendo.

Necesito hacer un script para actualizar un campo, numérico de una tabla que tiene n registros, con un contador que se va incrementando de uno en uno, desgraciadamente mis conocimientos todavía son escasos.


un saludo y gracias....
  #4 (permalink)  
Antiguo 19/05/2014, 03:53
Avatar de coloradocanyon  
Fecha de Ingreso: marzo-2009
Ubicación: Reino de Granada
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Número consecutivo

Set @a = 0;
UPDATE localidades SET codigo=@a:=@a+1


un saludo y gracias....
  #5 (permalink)  
Antiguo 19/05/2014, 04:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Número consecutivo

Cita:
Ojo que no siempre saldran en el mismo orden.
Usa un ORDER BY para que se numeren en algun orden conocido, así el orden de numeración NO tiene por que ser el de inserción.

Ese campo es un error de diseño.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 19/05/2014, 04:38
Avatar de coloradocanyon  
Fecha de Ingreso: marzo-2009
Ubicación: Reino de Granada
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Número consecutivo



un saludo y gracias....

Etiquetas: campo, consecutivo, registro, sql, tabla
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 15:43.