[Manual] Order by en MySQL parte 2

En el capitulo anterior de el manual de la clausula order by de MySQL aprendimos el uso basico del mismo ahora vayamos a lo mas avanzado y a lo mas interesante.

Entonces tenemos la tabla he hicimos algunas consultas con la clausual order by.

La tabla original

Programadores
Nombre
Telefono
Color
ID
Douglas
44444548
verde
5
Brendan
23131542
gris
2
Dean
58964121
verde
3
Linus
59684211
azul
1
Jhon
14524695
azul
4

Y luego hicimos la siguiente ordenacion por ID de forma descendente

select * from Programadores order by ID desc

Hasta ahi hibamos bien ok ahora como si queremos que se ordene por colores haremos lo siguiente.

select * from Programadores order by Color asc

Obviamente la order es por orden alfabetico en la columna color y obtenemos lo siguiente.

Nombre Telefono Color ID
Linus 59684211 azul 1
Jhon 14524695 azul 4
Brendan 23131542 gris 2
Dean 58964121 verde 3
Douglas 44444548 verde 5

Bien ahora que pasaria si quisieramos que tambien ordenara los telefonos el mas pequeño (111111) iria primero y el mas grande (9999999) iria despues, obviamente tambien se ordenarian los colores entonces la consulta seria de esta manera.

select * from Programadores order by Color asc, telefono asc

Lo cual nos arroja el siguiente resultado

Nombre Telefono Color ID
Jhon 14524695 azul 4
Linus 59684211 azul 1
Brendan 23131542 gris 2
Douglas 44444548 verde 5
Dean 58964121 verde 3


Como pudimos ver podemos agregarle varios campos a ordenar en el ejemplo se trata de 5 registros sin embargo en tablas con varios cientos o miles de registros nos resultara muy util

Pero que pasaria si lo que deseo es que se ordenen por color y el primer color sea el verde, luego el azul y por ultimo el gris.

Si usamos esta consulta

select * from Programadores order by Color desc

Nos arrojara esto.

Nombre Telefono Color ID
Dean 58964121 verde 3
Douglas 44444548 verde 5
Brendan 23131542 gris 2
Linus 59684211 azul 1
Jhon 14524695 azul 4

Y si la asecemos ASC (ascendente) estara exactanemte igual solo que al reves(pueden checarlo) de todos modos siempre permanecera el mismo orden, digamos alfabeticamente
a,b,c,d…,g,h,..v..z o al reves z,y,x,w,v…g,f…b,a

¿Entonces como le hago?

Pues esto fue lo que descubri ya que no se si se deba hacer asi o haya otra forma, de todos modos sirve.

Primero hay que indicarle que necesitamos el verde, luego el azul y ultimo el gris

el SQL seria

select * from Programadores order by
Color=”verde” desc, Color=”azul” desc , Color=”gris” desc

Uso desc para decirle que siempre el orden sera como los estoy anotando.
Con esta forma obtendremos lo que queriamos y sera asi.

Nombre Telefono Color ID
Dean 58964121 verde 3
Douglas 44444548 verde 5
Linus 59684211 azul 1
Jhon 14524695 azul 4
Brendan 23131542 gris 2

Como pudieron observar el resultado fue satisfactorio, asi que ya saben si el orden es el problema primero cheken ajaxman.net a ver que hay.

Espero que este articulo les sea de mucha ayuda.

Nota prueben con muchos datos y veran que es muy util

Fin del manal de Order by

Related Photos

No related photos.

2 Responses

11.19.2009

Muchas gracias carnal.. lo que andaba buscando =D

06.03.2010

“select * from Programadores order by
Color=”verde” desc, Color=”azul” desc , Color=”gris” desc”

Lo que queres hacer es en realidad ->
“select * from Programadores order by FIELD
(‘Color’,'verde’,'azul’,'gris’)

E incluso si queres que primero esten los grises y los demas no te importan
“select * from Programadores order by FIELD
(‘Color’,'gris’).
Tarde pero seguro el comentario.
Te lo comento porque quize hacer eso que vos haces y no me dio resultado, en cambio con este que te pase si.

Saludos

Comentar

* Nombre, Email y Comentario son campos obligatorios

Recibe nuestro contenido por email

Vas a recibir un email con los artículos escritos durante el día.

Categorias

Historico de entradas publicadas