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

Insertar una fila abajo de otra especifica (Mysql)

Estas en el tema de Insertar una fila abajo de otra especifica (Mysql) en el foro de Bases de Datos General en Foros del Web. Hola, tengo el comando para insertar cuantas filas quiera, es un script de clasificados de autos en donde los datos en mysql esta muy ordenados ...
  #1 (permalink)  
Antiguo 10/05/2010, 22:57
 
Fecha de Ingreso: julio-2005
Mensajes: 64
Antigüedad: 19 años, 4 meses
Puntos: 1
Insertar una fila abajo de otra especifica (Mysql)

Hola, tengo el comando para insertar cuantas filas quiera, es un script de clasificados de autos en donde los datos en mysql esta muy ordenados y quiero agregar las filas abajo de otra especifica para no perder el orden.

El comando es

Cita:
INSERT INTO `dbname`.`listing_field_tree` (`sid`, `field_sid`, `parent_sid`, `level`, `order`, `caption`) VALUES (NULL, '155', '495', '2', '1', 'Agile');
Cuando agrego esa fila me la toma bien pero me la deja al final con el autoincrement, yo quiero que vaya justo antes del modelo "Astra"

Osea que quede

Agile
Astra

En el buscador de la web sale perfecto porque el orden lo pongo como quiero, pero me preocupa el orden dentro de mysql cuando lo veo en phpmyadmin

Se que se le puede agregar para que vaya abajo de la fila que quiera pero aun no lo encuentro en google.

Saludos.

Última edición por gulys; 10/05/2010 a las 23:11
  #2 (permalink)  
Antiguo 11/05/2010, 05:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar una fila abajo de otra especifica (Mysql)

Cita:
En el buscador de la web sale perfecto porque el orden lo pongo como quiero, pero me preocupa el orden dentro de mysql cuando lo veo en phpmyadmin
Estás confundiendo un DBMS como MySQL con Excel, y el concepto es completamente diferente.
Lo primero que tienes que entender es que en los DBMS en general, el orden físico de los registros no está dado por el orden de entrada, ni por dónde quieres ponerlo. Está dado por la PK, y como en el caso de MyQSL, un autoincrement es por default PK, ése es el único orden que obtendrás
Por otro lado, lo que también debes comprender es que el orden de almacenamiento es totalmente irrelevante en función de las consultas. Lo único que lograrías haciendo lo que deseas es que quede más "bonito", pero no le agregaría ni eficiencia ni utilidad alguna, por cuanto las consultas durarían exactamente lo mismo, con el agregado que cualquier modificación al reordenamiento físico implicaría reescribir completamente la tabla y todos los índices... con un descenso de la performance general del sistema, todo por un miserable INSERT.
En realidad, lo único que necesitas hacer para ver la tabla como la quieres es indicarle al phpMyAdmin que te la ordene como la quieres... cosa que no requiere malabarismos con los registros.

Si quieres que el orden físico se corresponda con un ordenamiento determinado, lo que tienes que hacer es usar una PK no autonumérica, sino en todo caso basada en otro tipo de clave. A fin de cuentas, las PK autonuméricas son muy usadas, pero no son obligatorias. Siempre existe otra forma de identificar los registros, como por ejemplo, los DNI en las personas, las placas (patentes) en los automóviles, los números de serie de los productos, la Macaddress, o combinaciones de ellos, como los números de socio y el período pagado, en las cuotas de un club, etc.
Lo que tienes que hacer es simplemente ajustarte al modelo E-R.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/05/2010, 08:15
 
Fecha de Ingreso: julio-2005
Mensajes: 64
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Insertar una fila abajo de otra especifica (Mysql)

Osea que no puedo agregar la fila con ID 1520 (autoincrement) abajo de una fila con ID 290?

Digo esto porque en phpmyadmin voy a tener todo desordenado mientras vaya agrgando marcas y modelos, lo que quiero es que visualmente tenga las marcas y justo debajo todos los modelos de dicha marca, el script esta asi, lo que pasa es que ahora mientras agrego van quedando al final como es sabido.
  #4 (permalink)  
Antiguo 11/05/2010, 08:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar una fila abajo de otra especifica (Mysql)

Cita:
Digo esto porque en phpmyadmin voy a tener todo desordenado mientras vaya agrgando marcas y modelos,
phpMyAdmin no es una herramienta administrativa ni una interfase para usuarios. Es una herramienta de desarrollo.
¿Qué te importa cómo te muestre la estructura?
Cita:
lo que pasa es que ahora mientras agrego van quedando al final como es sabido.
SI quieres que te muestre lo que el usuario va a ver, entonces usa la ventana de SQL y ejecuta las mismas consultas que alimentarán los formularios y no pierdas tiempo pensando en cómo queda guardado en la base. Eso es irrelevante.

Entiende: A tí no te tiene que importar cómo lo guarda sino cómo lo recuperas... Es decir, cómo queda en la consulta.
El resto es asunto del DBMS, y esto es tan válido para MySQL como para Oracle o MS SQL Server.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/05/2010, 09:12
 
Fecha de Ingreso: julio-2005
Mensajes: 64
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Insertar una fila abajo de otra especifica (Mysql)

Tenes razon, es un capricho, pero bueno hay una forma de hacerlo, al que se encapriche je.

Simplemente se exporta la tabla y se la edita como uno quiera, luego se la importa de nuevo y queda.

Cita:
INSERT INTO `listing_field_tree` VALUES(495, 155, 0, 1, 11, 'Chevrolet');
INSERT INTO `listing_field_tree` VALUES(1405, 155, 495, 2, 1, 'Agile');
INSERT INTO `listing_field_tree` VALUES(496, 155, 495, 2, 1, 'Astra');
INSERT INTO `listing_field_tree` VALUES(497, 155, 495, 2, 2, 'Avalanche');
INSERT INTO `listing_field_tree` VALUES(498, 155, 495, 2, 3, 'Aveo');
El ID 1405 va antes del 496

Por otro lado quiero que quede de esa forma porque al agregar un modelo tengo que fijarme si ya se encuentra en la lista, y al tener ordenado todo justo debajo de su marca lo persivo mas rapido, sino tengo que usar el buscador phpmyadmin, el campo de busqueda de firefox o ir al formulario de mi web y cualquier metodo de esos es engorroso.

Última edición por gulys; 11/05/2010 a las 09:27
  #6 (permalink)  
Antiguo 11/05/2010, 10:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar una fila abajo de otra especifica (Mysql)

Cita:
Simplemente se exporta la tabla y se la edita como uno quiera, luego se la importa de nuevo y queda.
Eso es una chambonada bastante peligrosa, porque estás editando PKs, y por lo tanto tendrás problemas de consistencia de datos y de integridad referencial.
No deberías tratar estos temas con tanta liviandad.

¿Por qué no simplemente trabajas con las consultas adecuadas, o incluso creando VIEWs que te muestren la info ordenada como la deseas, en lugar de hacer peligrar la estabilidad de esa base?
Una vista es una solución mucho más práctica y menos peligrosa para la estructura de la base que lo que estás haciendo...
No te olvides que lo que estás viendo en el phpMyAdmin (y te vuelvo a recalcar que es una aplicación para desarrollo y no para usar como visor de usuarios) no es lo que en definitiva verán los usuarios al final, ni tampoco es lo que deberías usar para cargar datos a la base, ya que carece de rutinas de validación, que es precisamente lo que hace que puedas pargar instancias repetidas sin saberlo, ya que esa parte (la carga de datos), también debe ser contruida en la aplicación.
Nadie en su sano juicio carga datos en una base usando la consola... Eso se usa para pruebas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: abajo, especifica, fila, mysql
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 20:31.