MySQL - Ayuda para ordenar una select

 
Vista:

Ayuda para ordenar una select

Publicado por OmiWan (2 intervenciones) el 10/08/2016 11:22:35
Muy buenas a todos.

llevo un tiempo dándole vueltas a como ordenar una select. Tiene registros tal que así:

01
01.1
01.1.1
01.1.2
01.2
01.2.1
01.2.1.1
...
01.10
...
02

el caso es que necesito que esos campos se muestren por ese orden, en plan árbol jerárquico.

He probado a sustituir los '.' por '0' y ordenar por su valor numerico, rellenando con ceros hasta que todos tngan al misma longitud, pero nada, e 1.1 y el 1.10 se muestran seguidos tal que asi...

select rpad(replace(codigoJerarquia,'.',''),10,'0') AS `codigo`

01.1
01.1.1
...
01.10
01.2
.....

Agradecería vuestra ayuda.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda para ordenar una select

Publicado por DAVID (63 intervenciones) el 10/08/2016 13:38:39
Hola,
Pon la estructura de la tabla para ver los campos, y ver como podemos ayudarte.

Un saludo,
David
diseño web madrid
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para ordenar una select

Publicado por OmiWan (2 intervenciones) el 11/08/2016 08:53:32
Al final lo he solucioando de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
select *
from geope_responsable
order by
cast(substring_index(concat(codigojerarquia,'.0'),'.',1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',2),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',3),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',4),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',5),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',6),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',7),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',8),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',9),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',10),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',11),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',12),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',13),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',14),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',15),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',16),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',17),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',18),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',19),'.',-1) as unsigned),
cast(substring_index(substring_index(concat(codigojerarquia,'.0'),'.',20),'.',-1) as unsigned)
;


que me ordena hasta 20 niveles de hijos.... cosa que nunca tendré.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar