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

ordenar resultado con 2 criterios

Estas en el tema de ordenar resultado con 2 criterios en el foro de Bases de Datos General en Foros del Web. Hola, Tengo unas cadenas de texto de este tipo en una base de datos : Código: "G,H,I" ".J.K.S" ".A,G,H,I.J.K.S" Quiero ordenarlos por un lado por ...
  #1 (permalink)  
Antiguo 23/01/2016, 12:43
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 6 años, 6 meses
Puntos: 10
ordenar resultado con 2 criterios

Hola,

Tengo unas cadenas de texto de este tipo en una base de datos :

Código:
"G,H,I"
".J.K.S"
".A,G,H,I.J.K.S"
Quiero ordenarlos por un lado por la longitud de la cadena (las mas largas primeras)
Pero por otro lado Quiero que las que son iguales de longitud y no llevan ningún punto dentro, que se pongan siempre por delante de las que si tienen algún punto (esté donde sea el dicho punto )

con esta sentencia he conseguido que cumple el primer criterio

Código SQL:
Ver original
  1. SELECT * FROM mi_tabla ORDER BY CHAR_LENGTH(mi_columna) DESC;

Pero no se como hacer para que cumpla el segundo criterio también

con esta sentencia se queda así:

Código:
".A,G,H,I.J.K.S"
".J.K.S"
"G,H,I"
y el resultado deseado seria:
Código:
".A,G,H,I.J.K.S"
"G,H,I"
".J.K.S"
Gracias

Última edición por matake; 23/01/2016 a las 12:49
  #2 (permalink)  
Antiguo 25/01/2016, 06:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.318
Antigüedad: 12 años
Puntos: 2653
Respuesta: ordenar resultado con 2 criterios

La primera pregunta sería: ¿Qué DBMS usas? Porque "CHAR_LENGTH" aparece en mas de un DMS, pero las funciones útiles para tu problema son diferentes entre ellos.
La segunda pregunta, muy importante sería: ¿Realmente tienes dato así, o se trata de valores múltiples en un solo registro y un mismo campo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/01/2016, 08:58
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 6 años, 6 meses
Puntos: 10
Respuesta: ordenar resultado con 2 criterios

Hola ,
La bse datos es MySQL.
Los datos son realmente asi o sea characteres (incluidos unicode) como mucho seguidos de un numero Ej A A0 etc y separados en principio por coma
Lo que quieria hacer era de buscar coincidencias en mi columna y reemplazarlos por Un alias ( tambien character ) pero para distinguirlos ponerle un punto delante

Ej : si en mi columna tengo estos registros:
Código:
A,B,C,D,E,F,G,H
C,D,E
F,G,H
C,D
SE transformarian en
Código:
A,B.B.C
.D,E
F,G,H
C,D
o sea primero El A,B,C,D,E,F,G,H se transforma en A,B.B,F,G,H por transformar El grupo C,D,E en .B
luego se transforma en A,B.B.C donde .C es alias de F,G,H
luego C,D,E se transforma en .D,E por el alias .D de la coincidencia del C,D
etc .. etc...

Luego si se añade otro registro a mi_columna ej:
Código:
A,B.B.C
.D,E
F,G,H
C,D
D,F,G,H,I
el resultado final seria
Código:
A,B.B.C
.D,E
F,G,H
C,D
D.C,I
Por remplazar el F,G,H del registro D,F,G,H,I con su alias que es .C

etc etc

Cada registro lleva su alias alfabeticamente segun la insercion si se terminan los alfanumericos se empieza de nuevo con A0 etc



Lo que pasa es que justo antes de leer tu mensaje encontré otra solución que me sirve pero no es exactamente lo que pedía yo aquí.

O sea me di cuenta que si hago un union select y pongo al final todas las que llevan punto sirve para mi propósito


Código MySQL:
Ver original
  1. SELECT * FROM mi_tabla
  2. WHERE mi_columna NOT LIKE '%.%'
  3. SELECT * FROM mi_tabla
  4. WHERE mi_columna LIKE '%.%'
luego el remplazamiento lo hago por php.

No se si poner el tema como solucionado (aunque la solución no es del tema en si pero si del problema mio) pero me gustaría saber para aprender, si no te toma mucho tiempo cual seria la solución para mi pregunta inicial.

Gracias y saludos

Última edición por matake; 25/01/2016 a las 09:31

Etiquetas: criterios, mysql, resultado, select
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:59.