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 17-06-2005
CarlosN CarlosN is offline
Registrado
 
Registrado: abr 2004
Posts: 9
Poder: 0
CarlosN Va por buen camino
como se usa el alias de campos ?

hola,

utilizo firebird 1.03 y desde ibexpert envio la siguiente consulta de prueba

select cdad as cd from tabla order by cd

y me dice que campo cd desconocido. Pero es que el alias cd no lo puedo utilizar en ningun otro sitio de la sentencia, ni en where ni en having, operaciones ni nada.

Lo estoy haciendo mal o esto es asi. Y si es asi para que vale el alias entonces.
Responder Con Cita
  #2  
Antiguo 17-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
El uso de as en los select se usa para especificar el nombre de la columna que se va a mostrar en el resultado. Principalmente se usa para poner un nombre más descriptivo a las consultas del tipo:
Código SQL [-]
select fecha, sum(total) as TotalDia from facturas
group by fecha
En tu caso, debes usar:
Código SQL [-]
select cdad from tabla order by cdad
Responder Con Cita
  #3  
Antiguo 18-06-2005
CarlosN CarlosN is offline
Registrado
 
Registrado: abr 2004
Posts: 9
Poder: 0
CarlosN Va por buen camino
Bien, pero supon que hablamos de una expresion compleja a la que se asigna el alias y queremos filtrar u ordernar por esta expresion/campo.

No se puede hacer ?, habria que crear una vista? porque para poner el nombre bonito ya lo hago en la columna del dbgrid o en la etiqueta del formulario.

Gracias por contestar.
Responder Con Cita
  #4  
Antiguo 18-06-2005
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
Cita:
Empezado por CarlosN
porque para poner el nombre bonito ya lo hago en la columna del dbgrid o en la etiqueta del formulario.
Yo estoy de acuerdo con esto. No siento un alias como un método para dar nombres descriptivos a los campos, aunque el ejemplo de maeyanes no es para un campo cualquiera sino un campo calculado en donde sí se justifica.

No siempre usas consultas para desplegarlas en un DBGrid. Muchas veces has de hacer consultas directamente en un administrador de bases y nombres como sum(total) o trim(concat(apellido, ' ', nombre)) no ayudan mucho para visualizar los datos.

Por otra parte, no todos los motores son tan agnósticos de los nombres de alias. Leyendo la documentación de MySql por ejemplo, veo que los alias de campos pueden usarse en cláusulas ORDER BY, GROUP BY y HAVING.

// Saludos
Responder Con Cita
  #5  
Antiguo 19-06-2005
mariocase84 mariocase84 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Guatemala
Posts: 12
Poder: 0
mariocase84 Va por buen camino
Lightbulb

Hola CarlosN,

maeyanes y roman tienen razón, pero lo que vos tenes que hacer para que la consulta funcione es lo siguiente:

select cdad as cd
from tabla
order by cdad

lo que conseguis con ésto es que el nombre de la columna en la consulta será cd y lo estas ordenando por el campo cdad .

Eso es perfectamente válido para tu versión de Firebird.

saludos,
Responder Con Cita
  #6  
Antiguo 20-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Cita:
Empezado por CarlosN
Bien, pero supon que hablamos de una expresion compleja a la que se asigna el alias y queremos filtrar u ordernar por esta expresion/campo.

No se puede hacer ?, habria que crear una vista? porque para poner el nombre bonito ya lo hago en la columna del dbgrid o en la etiqueta del formulario.
Para ordenar por un campo generado por alguna expresión del tipo count, sum, etc., puedes usar la posición del campo en el select, por ejemplo:

Código SQL [-]
select fecha, sum(total) as TotalDia from facturas
group by fecha
order by fecha, 2 /* Aquí la consulta va a ordenar por la columna fecha y
luego por la columna sum(total) */

Cita:
Gracias por contestar.
Se hace lo que se puede...
Responder Con Cita
  #7  
Antiguo 20-06-2005
CarlosN CarlosN is offline
Registrado
 
Registrado: abr 2004
Posts: 9
Poder: 0
CarlosN Va por buen camino
Gracias por el interes.

Creo por lo que contais que los alias de campos en IB/FB son muy limitados, por ejemplo he comprobado que esto tampoco funciona

select cdad, count(blq) as cn, cn*2 from tabla group by cdad

(es una operacion ilogica pero demuestra que los alias no se pueden utilizar ni siquiera en otra parte de la expresion)

bueno mejor un poco de alias que nada.


Por lo menos he confirmado que las sentencias no las escribia yo mal sino que es que es asi.
Responder Con Cita
  #8  
Antiguo 20-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Lo que pasa es que los alias son solo para cuestiones de visualización... por ejemplo, yo solo los uso para casos como el ejemplo que te di o cuando por X razón, 2 tablas tienen un nombre de campo igual y hay que identificarlos en el resultado.


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 23:33:39.


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