Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2003
chutipascal chutipascal is offline
Miembro
 
Registrado: may 2003
Ubicación: Mallorca
Posts: 194
Poder: 22
chutipascal Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 24-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
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?

Saludos.
Responder Con Cita
  #3  
Antiguo 24-06-2003
chutipascal chutipascal is offline
Miembro
 
Registrado: may 2003
Ubicación: Mallorca
Posts: 194
Poder: 22
chutipascal Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 24-06-2003
pedrohdez pedrohdez is offline
Miembro
 
Registrado: may 2003
Ubicación: Murcia
Posts: 54
Poder: 22
pedrohdez Va por buen camino
Lightbulb

Y de paso que te invite a unas copichuela!!
Responder Con Cita
  #5  
Antiguo 24-06-2003
Kafu Kafu is offline
Miembro
 
Registrado: may 2003
Ubicación: Bilbao
Posts: 117
Poder: 22
Kafu Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 24-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 24-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
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.

Última edición por kinobi fecha: 24-06-2003 a las 14:40:52.
Responder Con Cita
  #8  
Antiguo 24-06-2003
Kafu Kafu is offline
Miembro
 
Registrado: may 2003
Ubicación: Bilbao
Posts: 117
Poder: 22
Kafu Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 24-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

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

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:50:20.


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
Copyright 1996-2007 Club Delphi