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 ...... (https://www.clubdelphi.com/foros/showthread.php?t=1687)

chutipascal 24-06-2003 12:01:37

Order by ......
 
Tengo un 'petit' problema con el order by,

Cuando hago un:

Order by departamento, familia, codigo

Ordena perfectamente si todos los campos fueran cadenas pero resuta que codigo es integer...y parece que en la ordenación de varios campos quedan moldeados como string.
El resultado es algo como esto

BAR, LICORES, 1
BAR, LICORES, 10
BAR, LICORES, 11
....
BAR, LICORES, 19
BAR, LICORES, 2
.....
Etc...

Cuando realmente quiero ver.
BAR, LICORES, 1
BAR, LICORES, 2
BAR, LICORES, 3
BAR, LICORES, 4
...
BAR, LICORES, 10


He mirado cosas sobre el colation order pero no sago nada en claro, alguna idea?

Un saludo.

kinobi 24-06-2003 12:23:18

Hola,

cosa rara. Por si las moscas lo he comprobado (en un Firebird 1.0) y obtengo el comportamiento esperado ...

Código:

  bar    licores  1
  bar    licores  2
  bar    licores  3
  ...
  bar    licores  20

Al principio pensé que te habías "colado" de foro, pero desde luego no es el comportamiento del SQL estándar.

No se me ocurre nada ... ¿tal vez algún caracter oculto en los campos CHAR/VARCHAR? :confused:

Saludos.

chutipascal 24-06-2003 12:34:47

Retiro lo dicho...............
Ya he encontrado el porque.......
erán dos familias similares licores y licoris

Gracias kinobi, por confirmarme que toca funcionar, me has puesto automaticamente sobre la pista estaba más cerrado que el bolsillo de Eliot Ness.

Ahora me voy directamente a 'pegar' al cliente.

Un saludo.

pedrohdez 24-06-2003 13:00:10

Y de paso que te invite a unas copichuela!!
:D :D :D

Kafu 24-06-2003 13:21:41

Pues a mí no me funciona de esa manera, estoy hecho un verdadero lío.
en una tabla con codigo varchar con los valores:

1, 11, 10, 2 el resultado de ordenar por código es

1,
10,
11,
2

Esto es, el primer comportamiento descrito por Chutipascal. Realmente no carece de lógica porque es una comparación alfabética caracter a caracter.

Ahora mismo creo estar usando (tengo un verdadero jaleo con los motores que me he instalado) el motor de Interbase 6.01, no sé si es por eso.

El orden que me interesa
sería el que Kinobi menciona como el normal, o sea el 2 antes que el 10, y además me interesa la A mayúscula antes que la b minúscula, cosa que tampoco me ocurre.

He fisgado muy someramente por la red y he encontrado un link:

http://www.brookstonesystems.com/

que parece que tiene algunas collate de terceros. Aún no me ha dado tiempo a mirarlo bien.

Si sabeis qué debo cambiar para obtener ese comportamiento por favor comentad la jugada. Un saludo,




F.T.G.

__cadetill 24-06-2003 14:36:54

Cita:

Posteado originalmente por Kafu
en una tabla con codigo varchar con los valores:
como tu mismo dices, es de tipo VARCHAR, por lo que la ordenación te la esta haciendo bien. En caracteres (no en numeros), el 2 es mayor a 10, 100, 1000000, ......

Para que te lo ordene como tu quieres, deberias (si puedes) pasar el campo a numerico

kinobi 24-06-2003 14:38:21

Hola,

Cita:

Posteado originalmente por Kafu
Esto es, el primer comportamiento descrito por Chutipascal. Realmente no carece de lógica porque es una comparación alfabética caracter a caracter.
pero recuerda que en el caso de Chutipascal el código es un entero (la secuencia correcta es: 1, 2, 3, ... 10, ...) y no un VARCHAR como es tu caso (la secuencia correcta es: "1", "10", "2", "3", ...).

Para que un VARCHAR "simule" la ordenación de enteros, es necesario que añadas blancos (o algún otro caracter - siempre el mismo) por la izquierda del VARCHAR.

Saludos.

Kafu 24-06-2003 15:00:19

Cita:

pero recuerda que en el caso de Chutipascal el código es un entero
Mis disculpas. En adelante haré uso del viejo truco de leerme bien los mensajes. Por alguna razón he asumido desde el principio que hablabamos de cadenas, justo estaba pensando en el tema de la ordenación y se me han mezclado las ideas.
No me es tan crucial la ordenación de números como el tema de las mayúsculas que creo que sí se podrá solucionar. Un avergonzado saludo,






F.T.G.

kinobi 24-06-2003 15:46:21

Hola,

Cita:

Posteado originalmente por Kafu
Un avergonzado saludo,
no te preocupes, en tu mensaje quedaba claro que era un lapsus.

Saludos.


La franja horaria es GMT +2. Ahora son las 01:03:29.

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