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

Intercambiar orden de las filas

Estas en el tema de Intercambiar orden de las filas en el foro de Mysql en Foros del Web. Hola. Se puede intecalar una fila en una tabla? Por ejemplo tabla1 id ciudad 1 madrid 2 barcelona 3 valencia 4 sevilla 5 murcia Intercalo ...
  #1 (permalink)  
Antiguo 24/02/2008, 06:31
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Intercambiar orden de las filas

Hola.

Se puede intecalar una fila en una tabla?
Por ejemplo

tabla1

id ciudad
1 madrid
2 barcelona
3 valencia
4 sevilla
5 murcia

Intercalo el registro 6 y lo pongo entre el 2 y el 3. Que se quede fisicamente en la tabla de tal forma.

id ciudad
1 madrid
2 barcelona
6 Cadiz
3 valencia
4 sevilla
5 murcia


Gracias a todos
  #2 (permalink)  
Antiguo 24/02/2008, 06:51
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 18 años
Puntos: 3
Re: Intercambiar orden de las filas

mmm, no se me ocurre hacerlo sin actualizar unas cuantas filas!!
Pero tampoco se me ocurre una razón para querer hacer un intercambio físico.

¿Cuál es el objetivo final del cambio? Quizá haya otra forma menos costosa de plantearlo.

Saludos
__________________
programación php
  #3 (permalink)  
Antiguo 24/02/2008, 07:06
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Re: Intercambiar orden de las filas

El objetivo final es que quiero simular una pagina excel y por eso quiero insertar una fila entre ambos. Para que luego al mostrarla no tenga problemas de que salga desordenada.

Yo pienso que debe de haber alguna orden Sql para introducirlo despues de una id.

Gracias.
  #4 (permalink)  
Antiguo 24/02/2008, 07:15
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 18 años
Puntos: 3
Re: Intercambiar orden de las filas

Vale, entiendo.

Para obtener una salida ordenada no hace falta que esten ordenados físicamente en la base de datos. Para esto se utiliza la cláusula ORDER BY NOMBRE_CAMPO [ASC,DESC]. Me parece que en tu caso deberías crear un campo más llamado POSICION o FILA en dónde puedas cambiar el número a tu antojo (en caso de un intercambio deberías hacer sólo dos updates).

Luego al momento de hacer la consulta la haces con:

SELECT * FROM ciudades ORDER BY posicion;

Pero olvidate de la posición física en la tabla, para eso esta MySQL.

Saludos.
__________________
programación php
  #5 (permalink)  
Antiguo 24/02/2008, 08:01
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Re: Intercambiar orden de las filas

Gracias, esa opción ya la había tomado en cuenta, lo que me genera mucho mas código para hacer una reordenacion de un segundo campo llamado por ejemplo posicion.

Pero es que recuerdo haber visto algo de esto hace tiempo y no se donde, y me parece que se podía hacer.

Pero bueno, si no es así, no pada nada.

Gracias.
  #6 (permalink)  
Antiguo 24/02/2008, 10:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: Intercambiar orden de las filas

La ordenación física es asunto de los índices primarios. Son ellos (también denominados indices densos) los que se encargan de mantener el orden físico de los registros de la tabla.
Puede que estés confundiendo lo que quieres obtener con lo que el motor de la base de datos tiene que guardar.
Si quieres hacer manipulaciones de ese tipo, es mejor que las hagas a nivel de aplicación, y no a nivel de base de datos. Esta última usa los algoritmos más eficientes posibles que se le programan para realizar las tareas. Este no es el caso de lo que quieres, que en definitiva implica un modo ineficiente de manejar una tabla, específicamente para un uso definido en una aplicación.
En resumen, apoyo parcialmente la propuesta de drbit. Usando un ORDER BY dentro de un subquery tendrías el resultado esperado, sin necesidad de demasiados trámites. Por otro lado, también lo puedes lograr usando índices HASH o TREE. Pero si desde el vamos lo que
quieres es simular el funcionamiento de Excel, entonces te conviene hacerlo en la aplciación, no en la base de datos.
  #7 (permalink)  
Antiguo 24/02/2008, 11:42
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Re: Intercambiar orden de las filas

Ok, muchas gracias
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 06:34.