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

ordenar por ip una lista

Estas en el tema de ordenar por ip una lista en el foro de Bases de Datos General en Foros del Web. Buenos días a todos! La cádena de texto que tengo es del tipo 12.345.67.8 y necesito ordenarla por el último elemento de la cadena, es ...
  #1 (permalink)  
Antiguo 07/10/2009, 02:53
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 17 años, 1 mes
Puntos: 2
ordenar por ip una lista

Buenos días a todos!

La cádena de texto que tengo es del tipo 12.345.67.8 y necesito ordenarla por el último elemento de la cadena, es decir, por el 8 en este caso.

La select que yo necesito ordenar es esta:

Código PHP:
select ip
from cliente group by ip
order by ip 
Cómo véis también uso un group by...

Gracias!!!
  #2 (permalink)  
Antiguo 07/10/2009, 04:19
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: ordenar por ip una lista

Hay funciones que manipulan los valores de IP que te pueden servir, pero para indicarte mejor nos deberías decir qué DBMS usas, ya que pueden variar según cual sea.
El ejemplo no nos sirve porque es SQL ANSI (estándar).
__________________
¿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 07/10/2009, 05:28
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ordenar por ip una lista

Hola gnzsoloyo, gracias por tu respuesta... perdonad, uso mysql
  #4 (permalink)  
Antiguo 07/10/2009, 05:44
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: ordenar por ip una lista

Perfecto.
Una de las formas más simples es convertir el valor de IP que esté presente en un campo, en su valor numérico real. No hay que olvidar que una IP creada sobre cuatro grupos de números, es en realidad un sistema de representación de elementos que en la realidad son valores numéricos enteros.
INET_ATON(expresionIP) , convierte una IP en su expresión numérica, por lo que esto debería funcionar:
Código SQL:
Ver original
  1. SELECT ip
  2. FROM cliente
  3. GROUP BY ip
  4. ORDER BY INET_ATON(ip) ;
__________________
¿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 07/10/2009, 05:49
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: ordenar por ip una lista

Si no funciona intentalo así:
Código sql:
Ver original
  1. SELECT ip
  2. FROM
  3.     (SELECT ip, INET_ATON(ip) num
  4.     FROM cliente
  5.     ORDER BY num) T1
  6. GROUP BY ip ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/10/2009, 06:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ordenar por ip una lista

Muchas gracias por tus dos respuestas tan rápidas! me ha funcionado la segunda query perfectamente, el único problema es que mi lista de ips empiezan todas con el mismo rango y me las ordena como te pongo en la lista de ips inventadas que te listo:

12.120.14.1
12.120.14.106
12.120.14.16
12.120.14.56
  #7 (permalink)  
Antiguo 07/10/2009, 08:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: ordenar por ip una lista

Con los datos que pones de prubeas, la primera opción de gnzsoloyo funciona bien.

Código mysql:
Ver original
  1. mysql> select *from internet_protocol;
  2. +-----------------+
  3. | ip              |
  4. +-----------------+
  5. | 12.120.14.1     |
  6. | 12.120.14.106   |
  7. | 12.120.14.16    |
  8. | 12.120.14.56    |
  9. | 192.168.194.168 |
  10. +-----------------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT ip
  14.     -> FROM internet_protocol
  15.     -> GROUP BY ip
  16.     -> ORDER BY INET_ATON(ip) desc;
  17. +-----------------+
  18. | ip              |
  19. +-----------------+
  20. | 192.168.194.168 |
  21. | 12.120.14.106   |
  22. | 12.120.14.56    |
  23. | 12.120.14.16    |
  24. | 12.120.14.1     |
  25. +-----------------+
  26. 5 rows in set (0.00 sec)
  27.  
  28. mysql> SELECT ip
  29.     -> FROM internet_protocol
  30.     -> GROUP BY ip
  31.     -> ORDER BY INET_ATON(ip) asc;
  32. +-----------------+
  33. | ip              |
  34. +-----------------+
  35. | 12.120.14.1     |
  36. | 12.120.14.16    |
  37. | 12.120.14.56    |
  38. | 12.120.14.106   |
  39. | 192.168.194.168 |
  40. +-----------------+
  41. 5 rows in set (0.02 sec)
  42.  
  43. mysql>

Que problema estas teniendo?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 08/10/2009, 07:45
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ordenar por ip una lista

He vuelto a probarlo y funciona perfectamente! muchas gracias a todos por vuestra ayuda:

Código PHP:
SELECT ip
FROM ip
GROUP BY ip
ORDER BY INET_ATON
(ipasc
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 23:17.