Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Alias

Estas en el tema de Alias en el foro de PostgreSQL en Foros del Web. Vengo de manejar base de datos Ms Access y alli podia hacer esto: SELECT precio * factor AS costo, precio - costo AS utilidad FROM ...
  #1 (permalink)  
Antiguo 11/08/2010, 12:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Alias

Vengo de manejar base de datos Ms Access y alli podia hacer esto:

SELECT precio * factor AS costo, precio - costo AS utilidad FROM tabla;

En postrgres no puedo usar el alias "costo" como lo hacia en access, asi que ago esto:

SELECT precio * factor AS costo, precio - precio * factor AS utilidad FROM tabla;

Pero hay consultas en las que esto se me empiesa a complicar por la cantidad de operaciones.

¿hay alguna manera de manejar los alias como referencia? o Access me mal acostumbro?
  #2 (permalink)  
Antiguo 11/08/2010, 12:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Alias

No manejo access entonces no veo muy bien que resutado es el que esperas de una consulta en postgres.
Explica un poco el problema

saludos alberto
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/08/2010, 13:32
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Alias

Bueno, primero gracias por el interes. No es un resultado lo que busco, lo que quiero es saber si existe una manera de utilizar el alias en una vista como referencia al valor/campo.

Pondre un ejemplo:

Código:
CREATE VIEW prueba AS
SELECT 
CASE
  WHEN tabla.costo < 10 THEN 0
 ELSE tabla.costo 
 END AS "CostoReal", 
...
El valor que me resulte en "CostoReal" lo necesito para hacer otras operaciones en otros campos, pero postgreSQL no me deja utilizar la etiqueta/nombre/alias "CostoReal", en su defecto lo que ago es tener que volver a escribir el CASE completo.

Lo que pregunto es que si hay manera de utilizar el CostoReal sin tener que escribir todo el CASE en cada operacion que aga con ese valor, algo asi como asignarlo a una variable por ejemplo.

En fin no se si me explico correctamente. Ojala me puedan echar una mano.

Saludos.
  #4 (permalink)  
Antiguo 13/08/2010, 13:58
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Alias

Veamos si entendí.

Yo tengo una tabla empleados.

Código SQL:
Ver original
  1. pruebas=> SELECT *FROM empleados;
  2.  cedula |    nombre     | fecha_nacimiento
  3. --------+---------------+------------------
  4.     124 | Diego Obando  | 2008-06-15
  5.     125 | daniel orozco | 2010-05-27
  6. (2 filas)

Quiero listar como menor o mayor los registros con fechas inferiores al año 2010.
Código SQL:
Ver original
  1. pruebas=> CREATE VIEW prueba AS
  2. pruebas-> SELECT
  3. pruebas-> cedula,
  4. pruebas-> nombre,
  5. pruebas-> CASE
  6. pruebas->   WHEN e.fecha_nacimiento < '2009-12-31'::DATE THEN 'menor'
  7. pruebas->  ELSE 'mayor'
  8. pruebas->  END AS "fechas"
  9. pruebas-> FROM empleados e;
  10. CREATE VIEW
  11. pruebas=> SELECT *FROM prueba;
  12.  cedula |    nombre     | fechas
  13. --------+---------------+--------
  14.     124 | Diego Obando  | menor
  15.     125 | daniel orozco | mayor
  16. (2 filas)
  17.  
  18. pruebas=> SELECT *FROM prueba WHERE fechas='menor';
  19.  cedula |    nombre    | fechas
  20. --------+--------------+--------
  21.     124 | Diego Obando | menor
  22. (1 fila)

No veo en que parte tienes problemas para que puedas operar con alias en una vista.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 24/08/2010, 10:55
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Alias

De verdad gracias por el apoyo, a ver si ahora si nos podemos entender.

Todo se centra el la vista "Prueba". Tienes un campo que se llama fechas, que devuelve "menor" o "mayor". Supon que necesitas ese valor para crear otro campo.

Por ejemplo agregar un campo extra a esa visita el cual te muestre lo siguiente:

"La fecha es " || fechas --Valor de campo fechas

Yo lo aria asi:

Código:
CREATE OR REPLACE VIEW mexico.asd AS 
 SELECT e.cedula, e.nombre, 
        CASE
            WHEN e.fecha_nacimiento < '2009-12-31'::date THEN 'menor'::text
            ELSE 'mayor'::text
        END AS fechas, 
        'La fecha es '::text || 
            CASE
                WHEN e.fecha_nacimiento < '2009-12-31'::date THEN 'menor'::text
                ELSE 'mayor'::text END
   FROM empleados e;
Quiero saber si hay una manera mas sencilla.

Gracias y saludos.
  #6 (permalink)  
Antiguo 24/08/2010, 12:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Alias

Cita:
Quiero saber si hay una manera mas sencilla.
No. Esa es una buena forma de obtener ese resultado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 25/08/2010, 09:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Alias

Gracias Huesos52.

Etiquetas: alias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:17.