Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ORDER BY No resulta con CHAR (https://www.clubdelphi.com/foros/showthread.php?t=91599)

MAXIUM 12-03-2017 18:48:03

ORDER BY No resulta con CHAR
 
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

Cita:

Empezado por MAXIUM (Mensaje 514236)
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)

Código:

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

Cita:

Empezado por fjcg02 (Mensaje 514247)
Una pregunta...

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

Saludos

No, es único.

fjcg02 13-03-2017 14:08:10

Cita:

Empezado por MAXIUM (Mensaje 514255)
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

Cita:

Empezado por MAXIUM (Mensaje 514243)
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?



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



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


Casimiro Notevi 13-03-2017 22:40:42

O no me he enterado... o estás confundido;

Cita:

Empezado por MAXIUM (Mensaje 514276)
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

Cita:

Empezado por Casimiro Notevi (Mensaje 514277)
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.


mamcx 13-03-2017 23:00:05

Cita:

Empezado por MAXIUM (Mensaje 514276)

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

Cita:

Empezado por Casimiro Notevi (Mensaje 514277)
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


La franja horaria es GMT +2. Ahora son las 16:33:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi