PDA

Ver la Versión Completa : ORDER BY No resulta con CHAR


MAXIUM
12-03-2017, 18:48:03
Hola que tal,

Estoy realizando una consulta y al intentar ordenarla por 3 campos, no resulta si una de ellas es del tipo CHAR o más bien la orden ignora este campo.

Sector del tipo CHAR ('A', 'B', 'C', etc).

Ej.: ORDER BY Titular, Cargo, Sector; // No ordena sin importar la posición dentro de la consultar.

mamcx
12-03-2017, 19:01:32
Podes dar mas datos y posiblemente, un test de prueba en

http://sqlfiddle.com/

Casimiro Notevi
13-03-2017, 00:09:54
Hola que tal,
Estoy realizando una consulta y al intentar ordenarla por 3 campos, no resulta si una de ellas es del tipo CHAR o más bien la orden ignora este campo.
Sector del tipo CHAR ('A', 'B', 'C', etc).
Ej.: ORDER BY Titular, Cargo, Sector; // No ordena sin importar la posición dentro de la consultar.

¿Qué consulta, con qué datos, qué código?...

MAXIUM
13-03-2017, 00:33:08
Para hacerlo simple y entender

Titular VARCHAR(20)
Cargo VARCHAR(20)
Sector CHAR(20)


SELECT
*
FROM
RUTA
ORDER BY
Titular, Cargo, Sector;


Si agrego el campo Sector a ORDER BY, es como si no lo colocara. Da el mismo resultado y no lo ordena por ese campo. Independiente si es ORDER BY Sector, Titular, Cargo; ORDER BY Titular, Sector, Cargo; o ORDER BY Titular, Cargo, Sector;

El campo Sector solo contiene un carácter, que puede ser A, B, C, D, etc.

Quería saber si hay documentación sobre incompatibilidad con campos CHAR al ordenar o puede que sea algo más.

mamcx
13-03-2017, 03:53:14
Y los datos? Y el motor? Y el ejemplo?

MAXIUM
13-03-2017, 05:11:38
El motor es Firebird 2.5

El resto es información sensible y confidencial que obviamente no quiero publicar.

Creí que con el ejemplo anterior bastaba, pero siendo más puntual en la pregunta ¿Existe alguna limitante en la consulta ORDER BY de Firebird con campos CHAR?

Me conformo con un Si o un No. Gracias.

fjcg02
13-03-2017, 09:10:36
Una pregunta...

Un señor titular puede `pertenecer a varios sectores ?

Saludos

MAXIUM
13-03-2017, 13:36:55
Una pregunta...

Un señor titular puede `pertenecer a varios sectores ?

Saludos
No, es único.

fjcg02
13-03-2017, 14:08:10
No, es único.


Pues entonces igual tendrías que poner el campo sector el primero en el ORDER BY, no ?

qué pasa si lo pasas a entero ? ORDER BY INTEGER(SECTOR), ...

Saludos

Casimiro Notevi
13-03-2017, 14:15:52
Entonces no sirve para nada ese último campo, en el order by.

mamcx
13-03-2017, 19:11:03
El resto es información sensible y confidencial que obviamente no quiero publicar.
Me conformo con un Si o un No. Gracias.

No tiene porque existir ningun problema por ser CHAR. Así que el lio tiene que ser en los datos como tal (a menos que el query plan se este dando una tratornada por algo raro. Ya miraste el query plan?)

MAXIUM
13-03-2017, 22:36:56
Bien llegue a la conclusión de que no es por culpa de CHAR. Por lo que la pregunta varia respecto a la original.

Ej. ORDER BY Titular; // PERFECTO!!!
Ej. ORDER BY Cargo; // PERFECTO!!!
Ej. ORDER BY Sector; //PERFECTO!!!

Ej. ORDER BY Titular, Cargo; //FAIL!!!
Se esperaba:
AMESTICA, MEDIO
ABARCA, SUPERIOR
CABRERA, SUPERIOR

Pero resulta:
ABARCA, SUPERIOR
AMESTICA, MEDIO
CABRERA, SUPERIOR

Lo mismo para Sector

¿Como pudo lograr que me ordene en primer lugar por sector y luego por Nombre?

http://i.imgur.com/uVleelM.png

ACTUALZIACIÓN: ORDER BY Sector, Titular; //PERFECTO!!!



Acá ordena bien el Sector y el Cargo, pero falla en el Titular...

http://i.imgur.com/TgPsP2J.png

Casimiro Notevi
13-03-2017, 22:40:42
O no me he enterado... o estás confundido;


Ej. ORDER BY Titular, Cargo; //FAIL!!!
Se esperaba:
AMESTICA, MEDIO
ABARCA, SUPERIOR
CABRERA, SUPERIOR

Pero resulta:
ABARCA, SUPERIOR
AMESTICA, MEDIO
CABRERA, SUPERIOR

Es que eso es correcto, ABARCA, AMESTICA, CABRERA están ordenados.

MAXIUM
13-03-2017, 22:56:49
O no me he enterado... o estás confundido;


Es que eso es correcto, ABARCA, AMESTICA, CABRERA están ordenados.
Puede que este confundido y claro, es correcto si la instrucción fuese ORDER BY Titular; pero lo que quiero por ejemplo es ORDER BY Titular, Cargo;

Es decir, todos los que tengan el mismo cargo se ordenen alfabeticamente.

Mira, aquí me ordena bien el Cargo, el Sector, pero no me ordena el Titular.

http://i.imgur.com/TgPsP2J.png

mamcx
13-03-2017, 23:00:05
Ej. ORDER BY Titular, Cargo; //FAIL!!!
Se esperaba:
AMESTICA, MEDIO
ABARCA, SUPERIOR
CABRERA, SUPERIOR

Pero resulta:
ABARCA, SUPERIOR
AMESTICA, MEDIO
CABRERA, SUPERIOR


Ah!, es el mismo problema que se ve aqui (junto a solucion):

http://clubdelphi.com/foros/showthread.php?t=91299

Donde realmente "Superior", "Medio" no es un orden alfabético sino personalizado.

MAXIUM
13-03-2017, 23:09:17
¡¡¡ SOLUCIONADO !!!

Cuando algo no te resulta y le das muchas vueltas al asunto, lo mejor es despejarse completamente. Salir a tomar aire, lo que sea, pero olvidarse del problema. Ya con aires nuevos ver el problema más relajado y paso a paso.

Lo que sucedió era simplemente el orden de los campos que debían ir en el ORDER BY. Eso era todo. Ordenar según la prioridad requerida.

ORDER BY CARGO, SECTOR, TITULAR ASC;

GRACIAS, GRACIAS, MIL GRACIAS POR VUESTRA PACIENCIA :D

Casimiro Notevi
13-03-2017, 23:11:31
O no me he enterado... o estás confundido Pues eso :D

fjcg02
14-03-2017, 09:07:43
Si no fuese por estos momentosssss ... qué sería de nosotros. :)


Lo bueno es que cuando estás "rallao" pones la pregunta y te ayudamos a darle aire fresco. A mi me ha pasado con errores pueriles, hasta que alguien te dice, ... "pero burro, qué estás haciendo?", y se te enciende la bombilla fundida.

Me alegro que hayas resuelto el entuerto!

Saludos