Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 30-abr-2008, 01:53   #1 (permalink)
kikovin ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 4
Pregunta ordenar por codigo extraño

Hola!

Esta es mi primera busqueda de ayuda asi que espero expresar bien lo que quiero hacer. Hace poco que entre a programar en mi empresa y la base de datos ya me la he encontrado asi...yo no hubiera hecho asi esto pero en fin, ahora me toca enfrentarme a este problema...a ver si me podeis ayudar

El asunto es que tengo en una tabla de proyectos un campo con el "codigo del proyecto" que es de tipo varchar. El string que contiene tiene el siguiente formato:

AA-BB-CCDD

Donde AA son dos caracteres que indican el departamento, BB son dos cifras para el año, CC son dos caracteres que indican una provincia y DD son dos cifras que indican el numero del proyecto dentro del año para ese departamento.

Os pongo un ejemplo para que se me haga más facil explicar lo que me piden:
Si en la tabla tengo estos 3 codigos (por orden de insercion)

HI-07-BU02
HI-06-SE05
HI-07-AB04

Y los ordeno con un ORDER BY me los deja asi:

1) HI-06-SE07
2) HI-07-AB04
3) HI-07-BU02

Que estarian ordenados por departamento (HI) y por año (06, 07)


LA cuestion es que debo ordenarlos por departamento (HI), por año (06,07) Y por numero del proyecto, es decir, que quede asi:

1) HI-06-SE07
2) HI-07-BU02
3) HI-07-AB04

Llevo varios dias dandole vueltas al asunto y es que esas dichosas letras del medio son las que fastidian todo el asunto, pero es la codificacion de la empresa y poco puedo hacer con eso...

En fin si alguien me pudiera ayudar le estaria MUUUUY agradecido

De todas formas si habeis llegado hasta aqui leyendo ya te doy las gracias jejeje que vaya rollo os he soltao
kikovin está desconectado   Responder Citando
Antiguo 30-abr-2008, 06:57   #2 (permalink)
quimfv tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 442
Re: ordenar por codigo extraño

Ahora no puedo ver si funciona, luego lo intento pero creo que puedes hacer lo siguiente


Código:
Select codigo,...
From tabla
...
order by substr(codigo,0,2),
              substr(codigo,3,2),
              substr(codigo,8,2);
tampoco se si es substr la funcion, ni si los caracteres se empiezan a contar des de 0 o de 1, pero seguro que existe una funcion que saque un substring de un campo string.

Luego te lo confirmo....

Quim
quimfv está desconectado   Responder Citando
Antiguo 30-abr-2008, 08:13   #3 (permalink)
kikovin ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 4
Re: ordenar por codigo extraño

Caray que bueno y que rápido!!

Ya lo he probado y efectivamente funciona , muchiiiisimas gracias Quim

Puede usarse tanto substr() como substring() y lo que si es que empiezan a contar desde 1.

Lo dicho, muchísimas gracias por la ayuda
kikovin está desconectado   Responder Citando
Antiguo 30-abr-2008, 08:20   #4 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 790
Re: ordenar por codigo extraño

A título de ampliación y por si sirve para otras cosas, quisiera recordar que también podría hacerse así:
... ORDER BY SUBSTRING_INDEX( codigo, '-', 1 ) , SUBSTRING_INDEX( SUBSTRING_INDEX( codigo, '-', 2 ) , '-', -1 ) , SUBSTRING_INDEX( codigo, '-', -1 )
Esta solución sería interesante si el número de caracteres entre los guiones pudiera variar, es decir, si tanto en el primer miembro como en el tercero pudieran encontrarse más o menos de 2 y 4 caracteres. Lo que hace es separar por un limitador, en tu caso el guión, con el que delimitas las tres partes. La mayor dificultad es hacer que salga el de en medio, para lo que hay que recurrir a dos SUBSTRING_INDEX.
jurena está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:12.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93