Foros del Web » Programando para Internet » ASP Clásico »

Como ordenar los datos de una select en base al valor numerico de una columna de text

Estas en el tema de Como ordenar los datos de una select en base al valor numerico de una columna de text en el foro de ASP Clásico en Foros del Web. Hola. He utilizado este comando: gaclasif.open "select * from tabla order by Cint(cod) " , v_conexion , siendo gaclasif un recordset. El campo cod es ...
  #1 (permalink)  
Antiguo 25/10/2004, 06:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
Como ordenar los datos de una select en base al valor numerico de una columna de text

Hola.
He utilizado este comando:
gaclasif.open "select * from tabla order by Cint(cod) " , v_conexion
, siendo gaclasif un recordset.

El campo cod es texto y existen 10 registro con los siguientes valores:
1,2,3,4,5,6,7,8,9,10

Yo quisiera que la select me devuelva el orden 1,2,3,4,5,6,7,8,9,10.
Lo que me devuelve es 1,10,2,3,4,5,6,7,8,9.

¿Como deberia crear la select?
Muchas Gracias.
  #2 (permalink)  
Antiguo 25/10/2004, 07:56
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Tu consulta "SELECT * from tabla order by CInt(cod)" es correcta y debería de regresarte lo que deseas, bueno, al menos en access. ¿qué BD estas utilizando?
  #3 (permalink)  
Antiguo 25/10/2004, 09:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
La base de datos es mysql y este es el error que me da:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.16-max-debug]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(cod)' at line 1

Muchas Gracias.
  #4 (permalink)  
Antiguo 25/10/2004, 09:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
a pues si, MySQL no reconoce CInt.

No recuerdo muy bien pero debe ser con cast:

SELECT * FROM tabla ORDER BY CAST(cod AS INTEGER);

Saludos
  #5 (permalink)  
Antiguo 25/10/2004, 10:14
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
De acuerdo

estas mal con el sql, te falta el criterio de orden, lñes dices que se ordene pero no les dice como... no es adivino


select * from tabla order by cod desc


select * from tabla order by cod asc


asc = ascendente 12345
desc = descendiente 54321
  #6 (permalink)  
Antiguo 25/10/2004, 10:36
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Pero, Muzztein... la forma de ordenamiento es opcional. Si se omite, toma como predeterminado ASC
__________________
...___...
  #7 (permalink)  
Antiguo 25/10/2004, 10:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Y el problema no era el criterio de ordenación, sino los valores strings.

Saludos
  #8 (permalink)  
Antiguo 26/10/2004, 00:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
He utilizado order by CAST(cod AS INTEGER)
y ahora me da el siguiente error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.16-max-debug]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER)' at line 1
  #9 (permalink)  
Antiguo 26/10/2004, 00:41
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
yo creo que si lo ordenas por ese valor siempre lo obtendras de la forma:
1,10,2,3,4,5,6,7,8,9.
y no:1,2,3,4,5,6,7,8,9,10.
Lo digo porque pasa igual si en una carpeta de tu ordenador creas 10 archivos y los llamas 1,2,3,4,5,6,7,8,9,10 respectivamente.
Si en la carpeta le das a ordenar por nombre tambien lo hace de la forma.
Quizas si en lugar de tener un campo como texto lo tuvieses numerico lo podrias ordenar como tu dices.
  #10 (permalink)  
Antiguo 26/10/2004, 06:26
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
a shuta.... no tenia idea
  #11 (permalink)  
Antiguo 26/10/2004, 06:34
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
No puedo modificar el tipo de dato, deber ser string.
Muchas Gracias.
  #12 (permalink)  
Antiguo 26/10/2004, 08:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Y si duplicas ese campo pero esta vez como numerico??
  #13 (permalink)  
Antiguo 26/10/2004, 08:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
Lo habia pensado pero tendria que modificar una gran parte de la aplicacion donde se accede a esta tabla.
Muchas Gracias.
  #14 (permalink)  
Antiguo 26/10/2004, 08:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Dice la documentación de Cast :

Cita:
...
CAST(expr AS type)
CONVERT(expr,type)
CONVERT(expr USING transcoding_name)
The CAST() and CONVERT() functions can be used to take a value of one type and produce a value of another type. The type can be one of the following values:
BINARY
CHAR
DATE
DATETIME
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
...
Entonces, podría quedar:
Código:
SELECT     *
FROM         Tipos
ORDER BY CAST(Clave_Cadena AS SIGNED )
Saludos
  #15 (permalink)  
Antiguo 26/10/2004, 08:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
POR FIN!!!
Ahora funciona!!
Muchisimas gracias!!!
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 19:07.