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

crear Vista con parámetros opcionales

Estas en el tema de crear Vista con parámetros opcionales en el foro de PostgreSQL en Foros del Web. Saludos Tengo la tabla: Código: CREATE TABLE sal04 ( id serial NOT NULL, reg_001 character varying(2) NOT NULL, est_001 character varying(2) NOT NULL, mun_001 character ...
  #1 (permalink)  
Antiguo 08/06/2009, 10:56
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
crear Vista con parámetros opcionales

Saludos

Tengo la tabla:
Código:
CREATE TABLE sal04 (
    id serial NOT NULL,
    reg_001 character varying(2) NOT NULL,
    est_001 character varying(2) NOT NULL,
    mun_001 character varying(2) NOT NULL,
    par_001 character varying(2) NOT NULL,
    cpo_001 character varying(3) NOT NULL,
    sal04_001 character varying(4) NOT NULL,
    sal02_001 integer NOT NULL,
    sal04_003 integer,
    sal04_004 integer,
    sal04_005 integer
);

COMMENT ON TABLE sal04 IS 'Registro de Morbilidad';

COMMENT ON COLUMN sal04.reg_001 IS 'Región';

COMMENT ON COLUMN sal04.est_001 IS 'Estado';

COMMENT ON COLUMN sal04.mun_001 IS 'Municipio';

COMMENT ON COLUMN sal04.par_001 IS 'Parroquia';

COMMENT ON COLUMN sal04.cpo_001 IS 'Centro Poblado';

COMMENT ON COLUMN sal04.sal04_001 IS 'Año de levantamiento de la información';

COMMENT ON COLUMN sal04.sal02_001 IS 'Causa de morbilidad';

COMMENT ON COLUMN sal04.sal04_003 IS 'Número de varones';

COMMENT ON COLUMN sal04.sal04_004 IS 'Número de hembras';

COMMENT ON COLUMN sal04.sal04_005 IS 'Total varones y hembras';
region, estado, municipio, parroquia, centro poblado y causa, son respectivamente, otras tablas, que tienen un ID y una Descripción

Luego, quiero una vista, que me traiga la cosa más o menos así:
año, region, estado, municipio, parroquia, centrpo poblado, causa, número de varones, número de hembras, total, porcentaje
donde la forma más general, sería algo así:
Código:
SELECT sal04.sal04_001, region.reg_002, estado.est_002, municipio.mun_002, parroquia.par_002, centro_poblado.cpo_002, sal02.sal02_002, sal04.sal04_005, sal04.reg_001, sal04.est_001, sal04.mun_001, sal04.par_001, sal04.cpo_001, sal04.sal02_001, round((sal04.sal04_005 * 100)::numeric / (( SELECT sum(sal04.sal04_005) AS sum FROM sal04))::numeric(10,2), 2) AS porcentaje
   FROM sal04
   JOIN region ON sal04.reg_001::text = region.reg_001::text
   JOIN estado ON sal04.reg_001::text = estado.reg_001::text AND sal04.est_001::text = estado.est_001::text
   LEFT JOIN municipio ON sal04.reg_001::text = municipio.reg_001::text AND sal04.est_001::text = municipio.est_001::text AND sal04.mun_001::text = municipio.mun_001::text
   LEFT JOIN parroquia ON sal04.reg_001::text = parroquia.reg_001::text AND sal04.est_001::text = parroquia.est_001::text AND sal04.mun_001::text = parroquia.mun_001::text AND sal04.par_001::text = parroquia.par_001::text
   LEFT JOIN centro_poblado ON sal04.reg_001::text = centro_poblado.reg_001::text AND sal04.est_001::text = centro_poblado.est_001::text AND sal04.mun_001::text = centro_poblado.mun_001::text AND sal04.par_001::text = centro_poblado.par_001::text AND sal04.cpo_001::text = centro_poblado.cpo_001::text
   JOIN sal02 ON sal04.sal02_001 = sal02.id;
Ahora, en el caso de tener criterios, digamos, poder seleccionar el año, una región, estado, municipio... sería algo como pasarle a la consulta un WHERE al final de la consulta, pero también el mismo WHERE al cálculo del porcentaje... peeeero, es opcional que reciba esos WHERE

alguna luz?
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 08/06/2009, 16:06
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: crear Vista con parámetros opcionales

Algo aproximado a lo que buscas.
http://www.postgresql.org/docs/8.2/s...l-prepare.html

No lo enfocaría tanto a resolverlo como una vista, sino mas bien con una sentencia preparada.

Se que he visto, como ejecutar una consulta contenida en una variable, y si es así, se podría concatenar un where con la información requerida, pero no logro encontrar como debe ser. Para hacerlo de esta forma, sería hacerlo con una función.

Un saludo cacr.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 19:57.