Re: Obteniendo informacion de 3 tablas en forma de columnas y no renglones. (Vista, Procedimiento Almacenado o consulta sencilla?).

From: "Alejandro Romero Parra" <aromero(at)etesa(dot)com(dot)mx>
To: "Mario Soto Cordones - Venezuela" <msotocl(at)gmail(dot)com>, "Alvaro Herrera" <alvherre(at)surnet(dot)cl>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Obteniendo informacion de 3 tablas en forma de columnas y no renglones. (Vista, Procedimiento Almacenado o consulta sencilla?).
Date: 2005-05-25 21:38:19
Message-ID: 010101c56172$11901b30$2e00020a@chafireta
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias Mario, dejame intentarlo..

Saludos

----- Original Message -----
From: "Mario Soto Cordones - Venezuela" <msotocl(at)gmail(dot)com>
To: "Alvaro Herrera" <alvherre(at)surnet(dot)cl>
Cc: "Alejandro Romero Parra" <aromero(at)etesa(dot)com(dot)mx>;
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, May 25, 2005 11:29 AM
Subject: Re: [pgsql-es-ayuda] Obteniendo informacion de 3 tablas en forma de
columnas y no renglones. (Vista, Procedimiento Almacenado o consulta
sencilla?).

> Yo solucione un problema similar utilizando la funcion crosstab, y eso
> me soluciono el problame de una tabla traspuesta con columnad
> dinamicas y por lo tando variables; te adjunto el query por si te
> sirv:
>
> select * from crosstab('select codigo, nombre, samafilial.nb_filial,
> samaubi.nb_ubicacion,co_contable,
> co_tecnico, descampo, valor_campo from
> _vasaf_systbl_1 , samafilial , samaubi,
> activos where _vasaf_systbl_1.id_estado =
> ''SA'' and empresa =1 and
> _vasaf_systbl_1.empresa = samafilial.co_empresa
> and
> _vasaf_systbl_1.filial = samafilial.co_filial and
> _vasaf_systbl_1.empresa = activos.co_empresa and
> _vasaf_systbl_1.codigo = activos.nu_activo_fijo
> and
> _vasaf_systbl_1.empresa = samaubi.co_empresa
> and
> _vasaf_systbl_1.filial = samaubi.co_filial
> and
> _vasaf_systbl_1.ubicacion =5 and
> _vasaf_systbl_1.ubicacion =
> samaubi.co_ubicacion AND
> modelo =4 And filial = 2
> group by codigo, nombre,
> samafilial.nb_filial,
> samaubi.nb_ubicacion,co_contable,
> co_tecnico, descampo ,
> valor_campo order by 1', 'select ''AREA
> M2''
> union all select ''LARGO MTS.''
> union all select ''TIPO DE PROPIEDAD''
> union all select ''TOMO'' ')
> as ( codigo varchar, nombre
> varchar, nb_filial varchar, nb_ubicacion varchar,
> co_contable varchar, co_tecnico
> varchar, "AREA M2" varchar ,"LARGO MTS."
> varchar ,"TIPO DE PROPIEDAD"
> varchar ,"TOMO" varchar )
>
>
> Los datos en MAYUSCULAS los obtengo dinamicamente.. sinceramente estaf
> funcion me ha ayudado mucho y la utilizo mucho ya que el sistema que
> disene es muy dinamico y super parametrizable.
>
> Espero te sirva
>
>
>
> El 25/05/05, Alvaro Herrera<alvherre(at)surnet(dot)cl> escribió:
>> On Tue, May 24, 2005 at 10:13:13AM -0500, Alejandro Romero Parra wrote:
>>
>> Hola,
>>
>> > Que mecanismo se puede utilizar para traer la informacion de la
>> > siguiente manera:
>>
>> > [tabla traspuesta cuya definicion de columnas es variable]
>>
>> Creo que lo que te convendria estudiar es si el modulo
>> contrib/tablefunc te sirve, particularmente la funcion crosstab() que
>> sirve para hacer trasposiciones de tablas.
>>
>> > De lo poco que he visto en postgresql esto se podria realizar con un
>> > Store Procedure??, alguien ya ha implementado algo como esto?
>>
>> Es posible. Pero no en PL/pgSQL. Puede que en PL/Perl puedas hacerlo
>> facilmente. Por otro lado, cualquiera sea el lenguaje en que lo hagas,
>> vas a necesitar definir el tipo de retorno exactamente _antes_ de
>> conocer los resultados de la consulta, por lo que es posible que sea
>> algo dificil hacer lo que quieres.
>>
>> Pensandolo bien, creo que tendrias dos opciones:
>>
>> 1. hacer dos consultas, la primera para saber cuantas columnas tendra el
>> resultado y con eso construir la segunda consulta;
>>
>> 2. retornar los resultados en un array.
>>
>> Lo segundo lo puedes hacer facilmente con PL/Perl, por ejemplo (sobre
>> todo si sabes programar en Perl ... )
>>
>> --
>> Alvaro Herrera (<alvherre[a]surnet.cl>)
>> "Tiene valor aquel que admite que es un cobarde" (Fernandel)
>>
>> ---------------------------(fin del mensaje)---------------------------
>> TIP 3: si publicas/lees desde Usenet, por favor envía "subscribe-nomail"
>> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
>> a los suscriptores de la lista
>>
>
>
> --
> cordialmente,
>
> Ing. Mario Soto Cordones

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jairo Martín Miguel 2005-05-25 21:51:47 Re: ejecutar una consulta creada
Previous Message Alejandro Romero Parra 2005-05-25 21:36:57 Re: Obteniendo informacion de 3 tablas en forma de columnas y no renglones. (Vista, Procedimiento Almacenado o consulta sencilla?).