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

[SOLUCIONADO] ordenar registros alfabeticamente

Estas en el tema de ordenar registros alfabeticamente en el foro de Mysql en Foros del Web. Lo que pasa es que tengo una bd con unos registros ya establecidos : 1 AAAA123456 2 AAAC123444 3 BAAA123456 4 DCDF123456 El problema es ...
  #1 (permalink)  
Antiguo 10/02/2013, 13:29
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
ordenar registros alfabeticamente

Lo que pasa es que tengo una bd con unos registros ya establecidos :

1 AAAA123456
2 AAAC123444
3 BAAA123456
4 DCDF123456
El problema es que si quiero registrar a un registro por ejemplo "CCCC123736" lo deberia de colocar en medio del registro 3 y 4 pero le asignaria el numero 3.1 por que estan ordenados alfabeticamente y no tengo idea de como realizarlo.
Lo que tengo es lo basico el ordenamiento de los registros como se ve y la suma del decimal ".1" alguna idea.....

Código PHP:
$nact "12.1";// ejemplo
    
$separador explode(".",$nact);
    
$p1 $separador[0];
    
$p2 $separador[1];
    
$inc $p21;
    
$numf $p1.".".$inc;
    echo
" $numf"//12.2


$insertar mysql_query("INSERT INTO `X`.`xx` (`num`, `cod`) 
VALUES ('{$numf}', '{$cod}')"
$conexion); 
  #2 (permalink)  
Antiguo 10/02/2013, 15:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ordenar registros alfabeticamente

Acláranos por qué haces todo eso. Puedes ordenar y luego numerar. ¿Necesitas almacenar el número de orden cuando puedes generarlo en una consulta o con programación? ¿Necesitas establecer ese orden por alguna razón?
  #3 (permalink)  
Antiguo 10/02/2013, 18:50
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: ordenar registros alfabeticamente


Lo que pasa que puse como ejemplo esos 4 registros pero son muchisimos .Estos registros ya tienen su numero establecido y ya no se le puede cambiar pero si agrego uno nuevo no lo deberia de colocar al final con el ultimo numero si no en orden alfabetico pero con un numero como puse en el ejemplo con "3.1" anexado en medio de los demas registros.
  #4 (permalink)  
Antiguo 10/02/2013, 22:30
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
Respuesta: ordenar registros alfabeticamente

Honestamente no veo nada viable eso que quieres hacer ya que los registros existentes van a tener que "recorrerse" y cuando llegues al 3.9?? qué pasará?? te recomiendo añadir un campo extra, un "numeración" por ejemplo y via programacion manipular ese campo, es decir, tus IDs existentes dejalos como estan y ve añadiendo por programacion la numeracion que necesites, al final con un simple select y order by vas a tener los registros ordenados como necesitas sin poner en riesgo la integridad de tus datos, espero haberme dado a entender.

Saludos!!
__________________
Don Ramón Fan
  #5 (permalink)  
Antiguo 11/02/2013, 10:32
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: ordenar registros alfabeticamente

Cita:
Iniciado por Sirius381 Ver Mensaje
Honestamente no veo nada viable eso que quieres hacer ya que los registros existentes van a tener que "recorrerse" y cuando llegues al 3.9?? qué pasará?? te recomiendo añadir un campo extra, un "numeración" por ejemplo y via programacion manipular ese campo, es decir, tus IDs existentes dejalos como estan y ve añadiendo por programacion la numeracion que necesites, al final con un simple select y order by vas a tener los registros ordenados como necesitas sin poner en riesgo la integridad de tus datos, espero haberme dado a entender.

Saludos!!
Por lo que te entendi es que cree un nuevo campo y en ese campo mediante programacion le asigne el numero que le corresponda. Me imagino que es algo como ya que estan ordenados alfabeticamente le sumo un numero al registro que esta antes y eso va en el nuevo campo. es algo asi....
  #6 (permalink)  
Antiguo 11/02/2013, 11:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ordenar registros alfabeticamente

Sigo sin considerar necesario almacenar nada. Una consulta como esta puede darte en todo momento el número de orden de cada uno. Está sacada de las FAQ de MySQL, escrita por gnzsoloyo en #13 permalink. La he adaptado para que ordene.

Código MySQL:
Ver original
  1.         (@REG := @REG + 1) Linea,
  2.         Campo1,
  3.         Campo2,
  4.         Campo3
  5.     FROM
  6.         (SELECT
  7.             @REG :=0,
  8.             Campo1,
  9.             Campo2,
  10.             Campo3
  11.         FROM Tabla1 ORDER BY Campo1) Tabla2;

Y naturalmente, podrías mediante otra subconsulta buscar el número correspondiente a un registro en ese orden.

Hay algunas otras soluciones con programación, mantener una tabla en la que al insertar un nuevo registro, se hace un truncate table, y se cargan además el dato, el id de la tabla anterior, y se genera automáticamente mediante el auto_increment el número de orden tras cada truncado, pero claro, eso puede hacerse si no se ingresan demasiados datos. Luego puedes, mediante un inner join entre la tabla principal y esta tabla auxiliar, mostrar el orden, pasar al siguiente o al anterior con programación, etc.

Última edición por jurena; 11/02/2013 a las 13:56
  #7 (permalink)  
Antiguo 12/02/2013, 08:43
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
consulta para ordenar registros

consulta para registros alfabeticamente
Lo que pasa que tengo muchos registros los cuales deben de estar ordenados alfabeticamente (obligatoriamente)y estos ya tienen asignados un campo donde se almacena un numero por ejemplo:

num codigo
1 aaaa121212
2 aabc1111111
3 cbvc123456

mi problema es que supongamos que nadamas tengo estos 3 registros ya establecidos y se me ocurre agregar uno nuevo a esta lista por ejemplo
el "bbee121212" este me lo deberia de colocar en medio del num2 y 3 (eso seria con un order by) pero como ya tienen asignado su numero no se les debe de cambiar y al nuevo le asignaria el 2.1 quedando asi:

1 aaaa121212
2 aabc1111111
2.1 bbee121212
3 cbvc123456

ya tengo la parte que le suma el ".1" lo que no se es como hacer la consulta para que me de el registro "aabc111111" (que me diga cual seria su anterior alfabeticamente)para despues tomar el numero de ""aabc11111" a este sumarle el ".1"
alguna idea...

Última edición por GatorV; 12/02/2013 a las 10:12
  #8 (permalink)  
Antiguo 12/02/2013, 08:55
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: consulta para ordenar registros

Pero los ID de los registros deben de ser números enteros, y además no deberías usarlos para ordenar desde luego. Lo único que tienes que hacer es hacer la consulta adecuada y ya te salen ordenados no todo ese lío.

Código SQL:
Ver original
  1. SELECT num, codigo FROM tabla ORDER BY codigo

¿Por qué no lo haces así?

Si lo quieres es que salgan luego del 1 al 5 por ejemplo simplemente haz un contador y por cada uno que imprimes suma uno al contador y ya está.
  #9 (permalink)  
Antiguo 12/02/2013, 10:00
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: consulta para ordenar registros

Cita:
Iniciado por alyciashape Ver Mensaje
Pero los ID de los registros deben de ser números enteros, y además no deberías usarlos para ordenar desde luego. Lo único que tienes que hacer es hacer la consulta adecuada y ya te salen ordenados no todo ese lío.

Código SQL:
Ver original
  1. SELECT num, codigo FROM tabla ORDER BY codigo

¿Por qué no lo haces así?

Si lo quieres es que salgan luego del 1 al 5 por ejemplo simplemente haz un contador y por cada uno que imprimes suma uno al contador y ya está.
Solo quiero saber cual es el registro que esta antes del que inserte ya ordenado alfabeticamente no se si se pueda
  #10 (permalink)  
Antiguo 12/02/2013, 10:11
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
Obtener el registro anterior alfabeticamente

Tengo una duda lo que pasa es que tengo unos datos ordenados alfabeticamente (con order by)y lo que me pregunto es si puedo saber el registro que esta arriba del que inserte a ultimo por ejemplo:


id codigo
-------------------------
1 aaaa121212
4 aabc1111111
8 cccc123456 //fue el ultimo y se ordeno en este lugar
2 dfgt1111111

El ultimo que inserte fue el numero 8 "cccc123456" como realizo la consulta para saber cual es el que esta arriba de él (en este caso es :4 aabc11111).

Última edición por gnzsoloyo; 12/02/2013 a las 10:22
  #11 (permalink)  
Antiguo 12/02/2013, 10:30
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
Respuesta: ordenar registros alfabeticamente

arcangel13_513: No se deben abrir nuevos threads para volver sobre un tema del que ya estás tratando en otro.
Si no te conforman las respuestas, como en este caso, a mi entender deberías especificarlo acá.
Por lo demás, te comento que el problema inicial es que una clave alfanumérica como la que describes, precisamente para prevenir tu problema, no suele crearse con un único campo, sino con dos, uno de los cuales es la clave alfanumérica y el segundo como clave numerica.
¿No te parece que deberías replantear tu modelo para lograr una mejor eficiencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 12/02/2013, 10:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ordenar registros alfabeticamente

Prueba así y nos dices:
Código MySQL:
Ver original
  1. SELECT id, codigo
  2.  FROM tabla
  3.  WHERE codigo < 'cccc123456'
  4.  ORDER BY codigo DESC
  5.  LIMIT 1
  #13 (permalink)  
Antiguo 12/02/2013, 17:45
 
Fecha de Ingreso: enero-2013
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: ordenar registros alfabeticamente

Cita:
Iniciado por jurena Ver Mensaje
Prueba así y nos dices:
Código MySQL:
Ver original
  1. SELECT id, codigo
  2.  FROM tabla
  3.  WHERE codigo < 'cccc123456'
  4.  ORDER BY codigo DESC
  5.  LIMIT 1
Si me funcinó muchas gracias

Etiquetas: alfabeticamente, insert, php, registro, registros, sql
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 12:24.