Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/12/2009, 08:15
Avatar de gnzsoloyo
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 Consulta

A partir de lo que te propusieron:
Código sql:
Ver original
  1. SELECT *
  2. FROM tabla
  3. ORDER BY CAST((SUBSTRING_INDEX(SUBSTRING(CodigoInterno, 2), '-', 1)) AS DECIMAL) ASC
solo hace falta que pongas a ver bien el tema de funciones.

Analizalo así:

1. Necesitas que te ordene por zona, por número y luego por subindice.
2. Eso significa que debes fragmentar el dato en tres partes.
3. ¿Qué función te puede devolver sólo el primer caracter de la izquierda? Fácil, existe en todos los DBMS: LEFT(string,size).
4. ¿Qué función puede partir una cadena devolviendo una parte u otra? Ya te la dieron: SUBSTRING_INDEX(str, separador, direccion)
5. ¿Qué función permite convertir una cadena en un número? También te lo dieron: CAST( str AS tipo).

Con esto ya deberías poder resolverlo por ti mismo...
Sería algo así:

Código SQL:
Ver original
  1. SELECT *
  2. FROM `Inventario`
  3. ORDER BY LEFT(CodigoInterno,1),
  4.          CAST((SUBSTRING_INDEX(CodigoInterno, '-', 1)) AS DECIMAL),
  5.          CAST((SUBSTRING_INDEX(CodigoInterno, '-', -1)) AS DECIMAL);
Esto ordenaría primero por la letra, luego por la area, y luego por codigo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)