From: | "Felipe Amezquita" <felmarla(at)gmail(dot)com> |
---|---|
To: | postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Join multiples tablas |
Date: | 2006-08-03 14:56:24 |
Message-ID: | bf4cfe570608030756x1e510d03o60446435eaec54f9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
este procedimiento de oracle trabaja left y right join y necesito
implementarlo en Postgres lo he intentado de mucha maneras y no me canciona
ayuda por favor
CREATE OR REPLACE PROCEDURE selec_afiliados_anexo(io_cursor
OUT types.tipo_cursor) as
BEGIN
DECLARE
sql_statement Varchar2(10000);
codTitPagador tipo.tip_codigo%type;
codPagador tipo.tip_codigo%type;
tipoResidencia tipo.tip_codigo%type;
BEGIN
codTitPagador := get_codigo_tipo('Afiliado','titular pagador');
codPagador := get_codigo_tipo('Afiliado','Pagador');
tipoResidencia := get_codigo_tipo('Ubicación','Residencia');
sql_statement := 'select afiliado.prg_codigo,
per_cedula,
upper(per_nombre || '' '' || per_apell1 || '' ''
|| per_apell2) as per_nombre,
par_nombre,
decode(sexo_codigo,''0'',''M'',''F'') as
sexo_codigo,
to_char(per_fecnac,''dd/mm/yyyy'') as per_fecnac,
get_edad(persona.per_codigo) as per_edad,
to_char(afi_feciniprot,''dd/mm/yyyy'') as
afi_feciniprot,
dir_direccion, loc_nombre,
(tel_numero ||
decode(tel_extens,''-1'',null,null,null,'' Ext '' || tel_extens)) as
tel_completo,
lower(per_ofidesc) as per_ofidesc,
decode(persona.per_incapacitada,''0'',''No'',''Si'')
as per_incapacitada,
tip_nombre
from persona, persona_direccion,
persona_telefono, afiliado, temp_programas, localidad, zona, sector,
barrio, manzana,direccion , parentesco, vinculo,
tipo
where afiliado.prg_codigo =
temp_programas.prg_codigo
and afiliado.tip_codigo = tipo.tip_codigo
and afiliado.est_codigo = ''Ac''
and afiliado.afi_fecha_retiro is null
and afiliado.prg_codigo = vinculo.prg_codigotit
and afiliado.prg_codigo = vinculo.prg_codigoafi
and afiliado.tip_codigo != :1
and afiliado.tip_codigo != :2
and afiliado.afi_codigo = vinculo.afi_codigoafi
and vinculo.par_codigo = parentesco.par_codigo
and afiliado.afi_codigo = persona.per_codigo
and persona.per_codigo =
persona_direccion.per_codigo(+)
and persona_direccion.tip_codigo(+) = :3
and persona_direccion.perdir_feccan(+) is null
and (persona_direccion.perdir_fecing in (select
max(perdir_fecing)
from persona_direccion
where persona_direccion.per_codigo = persona.per_codigo
and tip_codigo = :4
and est_codigo = ''Ac'')or persona_direccion.perdir_fecing is null)
and persona_direccion.dir_codigo =
direccion.dir_codigo(+)
and direccion.man_codigo = manzana.man_codigo(+)
and manzana.barr_codigo = barrio.barr_codigo(+)
and barrio.sec_codigo = sector.sec_codigo(+)
and sector.zona_codigo = zona.zona_codigo(+)
and zona.loc_codigo = localidad.loc_codigo(+)
and persona.per_codigo =
persona_telefono.per_codigo(+)
and persona_telefono.tip_codigo_ubicacion(+) = :5
and persona_telefono.pertel_feccan(+) is null
and (persona_telefono.tel_numero in (select
max(tel_numero)
from persona_telefono
where persona_telefono.per_codigo = persona.per_codigo
and tip_codigo_ubicacion = :6
and est_codigo = ''Ac'')or persona_telefono.pertel_fecing is null)
union
select programa.prg_codigo
,null,null,null,null,null,null,null,null,null,null,null,null,null
from programa, temp_programas
where programa.prg_codigo =
temp_programas.prg_codigo
and programa.prg_codigo not in (select
afiliado.prg_codigo
from afiliado
where afiliado.prg_codigo=
programa.prg_codigo
and afiliado.tip_codigo !=
:7
and afiliado.tip_codigo !=
:8
and afiliado.est_codigo =
''Ac''
and
afiliado.afi_fecha_retiro is null)
order by prg_codigo';
OPEN io_cursor FOR sql_statement USING codTitPagador, codPagador,
tipoResidencia, tipoResidencia, tipoResidencia, tipoResidencia,
codTitPagador, codPagador;
END;
END;
--
Ing Sistemas y Telecomunicaciones
Luis Felipe Lopez Amezquita
3008217523 - 3162589699
From | Date | Subject | |
---|---|---|---|
Next Message | Denny Torcates | 2006-08-03 15:44:48 | Ayuda Acerca de QPSQL7 |
Previous Message | Sergio Valdes Hurtado | 2006-08-03 13:45:55 | Re: Necesito buscar duplicados |