Tema: Ordenar
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/12/2013, 15:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Ordenar

Hola JeMaGa

Tal como lo mencionó gnzsoloyo, el problema es porque no es lo mismo ordenar una cadena que contiene números a ordenar un número... observa este ejemplo


Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla ORDER BY campo;
  2. +--------+
  3. | campo  |
  4. +--------+
  5. | 10-1   |
  6. | 10-10  |
  7. | 10-100 |
  8. | 10-111 |
  9. | 10-2   |
  10. | 10-3   |
  11. +--------+
  12. 6 rows in set (0.01 sec)

Si bien la solución que planteas puede servirte, NO ES LA MEJOR OPCIÓN.
Esto puede traerte muchos problemas... por un lado, nadie te asegura que siempre puedas realizar la conversión, es decir, imagina que almacenas letras o caracteres especiales... esto es por lo que NO DEBES UTILIZAR CAMPOS VARCHAR PARA ALMACENAR ESTE TIPO DE CAMPOS...

El Guión que mencionas NO SIRVE ABSOLUTAMENTE PARA NADA... lo ideal es que tuvieras dos campos, uno con la primer parte de tu cadena y otro con la segunda parte... si necesitas presentar el GUION al usuario, simplemente haces esto:

Código MySQL:
Ver original
  1. mysql> SELECT campo1, campo2 FROM tabla;
  2. +--------+--------+
  3. | campo1 | campo2 |
  4. +--------+--------+
  5. |     10 |      1 |
  6. |     ab |    def |
  7. |     10 |      3 |
  8. |     10 |     10 |
  9. |     10 |    111 |
  10. |     10 |    100 |
  11. +--------+--------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT CONCAT(campo1, '-', campo2) FROM tabla;
  15. +-----------------------------+
  16. | CONCAT(campo1, '-', campo2) |
  17. +-----------------------------+
  18. | 10-1                        |
  19. | ab-def                     |
  20. | 10-3                        |
  21. | 10-10                       |
  22. | 10-111                      |
  23. | 10-100                      |
  24. +-----------------------------+
  25. 6 rows in set (0.00 sec)
Saludos
Leo.