Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ordenamiento Logico de consulta

Estas en el tema de Ordenamiento Logico de consulta en el foro de Mysql en Foros del Web. hola tengo un problema, cuando hago un ordenamiento asc. de los id me los ordena perfecto, pero cuando tengo que ordenar por eh, 1.1.1 1.1.1.1, ...
  #1 (permalink)  
Antiguo 12/11/2010, 06:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 0
Ordenamiento Logico de consulta

hola tengo un problema, cuando hago un ordenamiento asc. de los id
me los ordena perfecto, pero cuando tengo que ordenar por eh, 1.1.1
1.1.1.1, o 1.1.1.12 los ordena mal.
queria saber que solucion hay a esto, no se como llamarlo si ordenamiento logico, o ordenar en base al valor real o absoluto, estoy perdido en eso.
uso php y mysql.
gracias!!!
  #2 (permalink)  
Antiguo 12/11/2010, 06:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 0
Respuesta: Ordenamiento Logico de consulta

econtre que se debe usar cast. pero a mi no me funciona el tipo de campo es varchar.
y la consulta es la siguiente
Código MySQL:
Ver original
  1. "Select *
  2. From conceptos Left Join
  3.  detalleordcompras On conceptos.codigo = detalleordcompras.partidaimputar ORDER BY CAST(codigo AS SIGNED)"
  #3 (permalink)  
Antiguo 12/11/2010, 09:21
 
Fecha de Ingreso: noviembre-2010
Mensajes: 17
Antigüedad: 14 años
Puntos: 1
Respuesta: Ordenamiento Logico de consulta

Hola. Creo que la consulta esta bien planteada, como tu dices el CAST no lo realiza, imagino por el caracter "." de la cadena del varchar.

A consecuencia, yo intentaría primero borrar los puntos y luego hacer un cast o una conversión a entero. Seria algo como esto:

Para reemplazar un caracter en mysql creo que se usa la funcion "replace"

REPLACE('cadenaAreemplazar', 'caracter_que_reemplazaras', 'nuevo_caracter');

asi que la consulta quedaria asi:

Código MySQL:
Ver original
  1. From conceptos Left Join
  2.   detalleordcompras On conceptos.codigo = detalleordcompras.partidaimputar ORDER BY CAST( REPLACE(codigo, '.', '') AS SIGNED)

Espero que te sirva la idea.

Un saludo
  #4 (permalink)  
Antiguo 12/11/2010, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a Mysql

Etiquetas: logico, ordenamiento
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 16:44.