Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Ayuda con 'order by'

Saludos a todos,

Necesito una ayudita en una cláusula 'order by'.

Tengo tres campos que quiero ordenar, CATEG (numérico), SUBCATEG (numérico), y CODIGO (caracter).

Mi problema es que CODIGO puede contener 'Null', que necesito que sea diferente a un caracter en blanco.

Quiero ordenarlo en principo así : 'order by CATEG, SUBCATEG, CODIGO' peeeeeeero que en CODIGO aquellos registros que contengan algún caracter me salgan posteriores a los que tengan 'null'.

Y es aquí donde Interbase 7.5 me pone primero los que tienen algún caracter y luego los que tienen 'null' (en CODIGO) y quiero que sea al revés.

Un orden ejemplo sería (así quiero yo que me lo ordene)
CATEG SUBCATEG CODIGO
1 1 null
1 2 null
1 3 null
1 3 ABC

... pero Interbase 7.5 me lo ordena de esta manera
CATEG SUBCATEG CODIGO
1 1 null
1 2 null
1 3 ABC
1 3 null

Gracias por vuestra ayuda.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 07-11-2006 a las 20:36:53.
Responder Con Cita
  #2  
Antiguo 07-11-2006
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Ohhhh, es en estos casos en los que doy un respiro de felicidad al pensar de que yo en una situación como la tuya usando Firebird lo resolvería tan facil como poner:

order by CATEG, SUBCATEG, CODIGO NULLS FIRST

Dios!!!!, Gracias por estos pequeños momentos de felicidad no-justificada!!!!
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #3  
Antiguo 07-11-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 07-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tengo entendido que Interbase 7.5 ya incorpora la función COALESCE con la cual puedes convertir los valores NULL:

Código SQL [-]
select categ, subcateg, coalesce(codigo, 0)
...

de manera que obtendrás 0 para los valores NULL. Lo que desconozco es si puedes usar el COALESCE en la cláusula ORDER BY.

// Saludos
Responder Con Cita
  #5  
Antiguo 08-11-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Tengo que reconocerle una vez más a Román por su maravillosa sabiduría !

No conocía la función COALESCE, ni tampoco NULLIF que he observado vienen descritas en un fichero adicional de Interbase 7.5 como novedades y que uno se mira y lee al principio pero después no se puede acordar de todo, y menos de cosas que al principio a uno le parecen sin mayor trascendencia

Efectivamente, tal y como anticipó Román, COALESCE no permite su utilización en 'Order by'.

Intenté algo así como
Código SQL [-]
Select ... COALESCE(CODIGO,' ') as COA_CODIGO ...
order by CATEG, SUBCATEG, COA_CODIGO
y me salta con que 'datatype not supported for arithmetic'.

Finalmente he acudido a la cláusula CASE de Interbase (cuya existencia también desconocía ) y lo he solucionado finalmente de esta manera :

Código SQL [-]
Select CATEG, SUBCATEG,
Case When CODIGO is Null then ' ' else CODIGO End as AUX_CODIGO
from TABLE
order by CATEG, SUBCATEG, AUX_CODIGO

Mil gracias de nuevo por las ayudas prestadas.
__________________
Piensa siempre en positivo !
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Order by con parámetros Carmelo Cash SQL 4 14-12-2005 14:01:48
Tab Order kepacha Varios 5 31-01-2005 13:32:40
Order by VRO SQL 6 31-08-2004 08:17:05
Order by ...... chutipascal Firebird e Interbase 8 24-06-2003 14:46:21
ORDER BY en FireBird FRANKER Firebird e Interbase 2 07-05-2003 11:41:02


La franja horaria es GMT +2. Ahora son las 07:21:49.


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