Foros del Web » Programando para Internet » PHP »

Ordenar Consulta SQL

Estas en el tema de Ordenar Consulta SQL en el foro de PHP en Foros del Web. Tengo en la columna "valores" de la tabla contenidos los siguientes registros: 149000 34900 45000 65000 99000 realizó la siguiente consulta: select * from contenidos ...
  #1 (permalink)  
Antiguo 31/05/2005, 11:44
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 19 años, 11 meses
Puntos: 0
Ordenar Consulta SQL

Tengo en la columna "valores" de la tabla contenidos los siguientes registros:

149000
34900
45000
65000
99000


realizó la siguiente consulta:

select * from contenidos order by contenidos .valores asc

Lo ideal seria que me mostrará este orden:


34900
45000
65000
99000
149000

Pero el resultado que me da es este:

149000
34900
45000
65000
99000

Cómo hago para que me muestre los resultado como yo lo deseo con el orden ascendente ??


Gracias.
  #2 (permalink)  
Antiguo 31/05/2005, 12:06
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Te los está ordenando alfabéticamente, el campo es de tipo numérico o de texto?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 31/05/2005, 12:16
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 19 años, 11 meses
Puntos: 0
Es un campo de texto, porque en algunos casos uso texto y en otro números, entonces necesito que el "order by columna asc" me funcione tanto para texto como para números...


Gracias
  #4 (permalink)  
Antiguo 31/05/2005, 12:32
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Qué SGBD usas?

Si usas mysql he encontrado un truquete:

Posted by Albert Vega on September 3 2004 11:17pm [Delete] [Edit]

Similar to the above, if you have numbers written in text or characters, and you want to sort them in ascending order and you don't want this:
mysql> select number from (table) order by number;

+--------+
| number |
+--------+
| 1 |
| 10 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+--------+


Use this:
mysql> select number from (table) order by (number+0);

+--------+
| number |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+--------+

The (field + 0 ) converts the text/character in the field into an integer.

Es decir, que le sumes 0 al campo para convertirlo en un número.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)

Última edición por DjNelson; 31/05/2005 a las 12:40
  #5 (permalink)  
Antiguo 31/05/2005, 12:41
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 19 años, 11 meses
Puntos: 0
Ok, aclaro un poco más, estoy usando mysql 3.23.


La consulta es:

$consulta = "select grupoplanes.subcat,categorias.destacados,grupoplan es.idcat,grupoplanes.nombregrupo,grupoplanes.colum na1,grupoplanes.columna2,grupoplanes.condicionesgr upo,promociongrupo,
grupoplanes.columna3,grupoplanes.columna4,grupopla nes.colorfondo,planes.nombrePlan,planes.columna1 AS col1, planes.columna2 AS col2,
planes.columna3 AS col3, planes.columna4 AS col4,grupoplanes.colorbarra,planes.idcat AS 'idip',categorias.nombrecates AS 'nombrecates'

from planes INNER JOIN grupoplanes ON (grupoplanes.idcat=planes.subcat) INNER JOIN categorias ON (categorias.idcat=grupoplanes.subcat)
where planes.subcat='$idGrupo'
order by grupoplanes.columna1+0 asc

";




Y el resultado sigue siendo el mismo:



149000
34900
45000
65000
99000



Gracias

Última edición por conetsol; 31/05/2005 a las 12:49
  #6 (permalink)  
Antiguo 31/05/2005, 13:01
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 19 años, 11 meses
Puntos: 0
Ok, acabo de ponerlo en práctica y me funciona perfectamente, muchas gracias DjNelson (K).



Saludos y un abrazo.

Leo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:43.