Re: Parametro en vista

Lists: pgsql-es-ayuda
From: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
To: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Parametro en vista
Date: 2009-01-27 19:45:20
Message-ID: fbe285730901271145r71c3900cq68d1a7493091f34d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Buenas tardes

Quiero solicitarle ayuda para le creación de una vista que reciba
parametros, estuve leyendo el tema en correos anteriores, pero no entiendo
la solucciion o estoy bloqueado..

La pregunta concreta es

Tengo una vista que me obtiene los datos de una base de datos de 1 millon de
registro, esa vista tiene un campo que es el periodo, los informes o lo que
el usuario final desea ver se base en esta consulta, pero siempre ve toda la
información y no la que necesita, entonces opte por pasarle parmetros
atravez de una tabla que toma los datos que el usuario consulta.. Esta es la
forma correcta?

O existe otra forma.. me la pueden explicar?

Gracias


From: "Javier Aquino H(dot)" <JAquino(at)LexusEditores(dot)com>
To: "'yanguma'" <ricardo(dot)yanguma(at)gmail(dot)com>, "'postgresayuda'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Parametro en vista
Date: 2009-01-27 20:25:28
Message-ID: !&!AAAAAAAAAAAYAAAAAAAAAEb9u5b69uBDhG2morSUBrDigAAAEAAAAPLF7H6wgp1EjmyKrbAoutEBAAAAAA==@LexusEditores.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

La forma correcta es que hagas un SELECT a esa vista y en el WHERE filtras
el periodo que necesitas.

Slds,

Javier.

_____

De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de yanguma
Enviado el: Martes, 27 de Enero de 2009 02:45 p.m.
Para: postgresayuda
Asunto: [pgsql-es-ayuda] Parametro en vista

Buenas tardes

Quiero solicitarle ayuda para le creación de una vista que reciba
parametros, estuve leyendo el tema en correos anteriores, pero no entiendo
la solucciion o estoy bloqueado..

La pregunta concreta es

Tengo una vista que me obtiene los datos de una base de datos de 1 millon de
registro, esa vista tiene un campo que es el periodo, los informes o lo que
el usuario final desea ver se base en esta consulta, pero siempre ve toda la
información y no la que necesita, entonces opte por pasarle parmetros
atravez de una tabla que toma los datos que el usuario consulta.. Esta es la
forma correcta?

O existe otra forma.. me la pueden explicar?

Gracias

--
Este mensaje ha sido analizado por <http://www.mailscanner.info/>
MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
MailScanner agradece a transtec Computers <http://www.transtec.co.uk/> por
su apoyo.

--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
For all your IT requirements visit: http://www.transtec.co.uk


From: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
To: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>, yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Subject: Re: Parametro en vista
Date: 2009-01-27 20:30:20
Message-ID: 774285.44982.qm@web63704.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

--- El mar 27-ene-09, yanguma <ricardo(dot)yanguma(at)gmail(dot)com> escribió:

> De: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
> Asunto: [pgsql-es-ayuda] Parametro en vista
> A: "postgresayuda" <pgsql-es-ayuda(at)postgresql(dot)org>
> Fecha: martes, 27 enero, 2009, 4:45 pm
> Buenas tardes
>
> Quiero solicitarle ayuda para le creación de una vista que
> reciba
> parametros, estuve leyendo el tema en correos anteriores,
> pero no entiendo
> la solucciion o estoy bloqueado..
>
> La pregunta concreta es
>
> Tengo una vista que me obtiene los datos de una base de
> datos de 1 millon de
> registro, esa vista tiene un campo que es el periodo, los
> informes o lo que
> el usuario final desea ver se base en esta consulta, pero
> siempre ve toda la
> información y no la que necesita, entonces opte por
> pasarle parmetros
> atravez de una tabla que toma los datos que el usuario
> consulta.. Esta es la
> forma correcta?
>
> O existe otra forma.. me la pueden explicar?
>
> Gracias

Mira, es mas o menos correcta, puesto que sin duda funciona, no es la mejor.

Te tiro otras dos posibilidades la de crear una funcion sql

1 con una funcion sql

* central.cdocumentos_acreedores_pendientes vista que devuelve todos

CREATE OR REPLACE FUNCTION central.fnc_acree_pendiente(nempresa integer, nmoneda integer)
RETURNS SETOF central.cdocumentos_acreedores_pendientes AS
$BODY$
select id_documentos,serie,numero,fecha,id_empresa,
categoria_empresa,id_moneda,cotizacion,total, pagado,
pendiente from central.cdocumentos_acreedores_pendientes
where id_empresa = $1 and id_moneda = $2
order by fecha
$BODY$
LANGUAGE 'sql' VOLATILE;
ALTER FUNCTION central.fnc_acree_pendiente(integer, integer) OWNER TO postgres;

Como ves recibe dos parametros que con el where actuan en la condicion.

2 posiblilidad.

Yo uso vb, y defino un recordset con el select a la consulta que trae todos, solo que con una condicion que no traiga registros, cuando en el formulario recibo los parametros, entonces armo el select con el where y redefino el recordset, lo refresco y listo.

Cual es mejor, a mi me da lo mismo, pero si es una vista actualizable con triggers y voy a permitir que se modifique desde un datagrid directamete, entonces opto por la segunda.

Si quiero tirar consultas, entonces mejor la primera y con crystal report funciona muy bien.

Atte.
Gabriel Colina

¡Todo sobre la Liga Mexicana de fútbol! Estadisticas, resultados, calendario, fotos y más:&lt;
http://espanol.sports.yahoo.com/


From: Gilberto Castillo Martínez <gilberto(dot)castillo(at)etecsa(dot)cu>
To: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametro en vista
Date: 2009-01-27 20:33:36
Message-ID: 1233088416.30440.79.camel@gilbertoc
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El mar, 27-01-2009 a las 14:45 -0500, yanguma escribió:
>
> Buenas tardes
>
> Quiero solicitarle ayuda para le creación de una vista que reciba
> parametros, estuve leyendo el tema en correos anteriores, pero no
> entiendo la solucciion o estoy bloqueado..
>
> La pregunta concreta es
>
> Tengo una vista que me obtiene los datos de una base de datos de 1
> millon de registro, esa vista tiene un campo que es el periodo, los
> informes o lo que el usuario final desea ver se base en esta consulta,
> pero siempre ve toda la información y no la que necesita, entonces
> opte por pasarle parmetros atravez de una tabla que toma los datos que
> el usuario consulta.. Esta es la forma correcta?
>
> O existe otra forma.. me la pueden explicar?

Te puedes hacer una función donde le pases de parametro el campo de
criterio a buscar y la salida los registros que realmente le interesa a
cada usuario

Algo así:

CREATE OR REPLACE FUNCTION listarcampo(periodo text)
RETURNS SETOF tu_tabla AS
$BODY$
select * from tu_tabla
where case when $1 is not null then periodo like '%' || $1 ||
'%' else true end;
$BODY$
LANGUAGE 'sql' VOLATILE;

>
> Gracias
>


From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametro en vista
Date: 2009-01-27 20:38:26
Message-ID: f205bb120901271238j2735d8f6ud68b075e20fa638f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El día 27 de enero de 2009 18:33, Gilberto Castillo Martínez
<gilberto(dot)castillo(at)etecsa(dot)cu> escribió:
> El mar, 27-01-2009 a las 14:45 -0500, yanguma escribió:
>>
>> Buenas tardes
>>
>> Quiero solicitarle ayuda para le creación de una vista que reciba
>> parametros, estuve leyendo el tema en correos anteriores, pero no
>> entiendo la solucciion o estoy bloqueado..
>>
>> La pregunta concreta es
>>
>> Tengo una vista que me obtiene los datos de una base de datos de 1
>> millon de registro, esa vista tiene un campo que es el periodo, los
>> informes o lo que el usuario final desea ver se base en esta consulta,
>> pero siempre ve toda la información y no la que necesita, entonces
>> opte por pasarle parmetros atravez de una tabla que toma los datos que
>> el usuario consulta.. Esta es la forma correcta?
>>
>> O existe otra forma.. me la pueden explicar?
>
> Te puedes hacer una función donde le pases de parametro el campo de
> criterio a buscar y la salida los registros que realmente le interesa a
> cada usuario
>
> Algo así:
>
> CREATE OR REPLACE FUNCTION listarcampo(periodo text)
> RETURNS SETOF tu_tabla AS
> $BODY$
> select * from tu_tabla
> where case when $1 is not null then periodo like '%' || $1 ||
> '%' else true end;
> $BODY$
> LANGUAGE 'sql' VOLATILE;
>
>>
>> Gracias
>>
>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

Otra opción es prepare statements. Pero te aconsejo que realices
explain analyze antes de poner en producción.
Los prepare pueden recibir parametros y suelen ser interesantes opciones
para consultas pre armadas.

--
Emanuel Calvo Franco
ArPUG / AOSUG Member
Postgresql Support & Admin


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametro en vista
Date: 2009-01-27 20:41:39
Message-ID: 20090127204139.GK6444@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

yanguma escribió:

> Tengo una vista que me obtiene los datos de una base de datos de 1 millon de
> registro, esa vista tiene un campo que es el periodo, los informes o lo que
> el usuario final desea ver se base en esta consulta, pero siempre ve toda la
> información y no la que necesita, entonces opte por pasarle parmetros
> atravez de una tabla que toma los datos que el usuario consulta.. Esta es la
> forma correcta?

No. Lo más razonable es que el usuario agregue un WHERE con los filtros
que necesita (o mejor dicho, la aplicación lo hace). De esta forma, el
optimizador puede producir el mejor plan automáticamente. Cualquier
clase de cosa que hagas con funciones va a tener necesariamente peor
rendimiento.

--
Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8
"Las navajas y los monos deben estar siempre distantes" (Germán Poo)


From: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametro en vista
Date: 2009-01-27 21:23:54
Message-ID: fbe285730901271323n7911e2bfwf8470736d99d9081@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Agradezco a todos sus respuesta.

Alvaro una pregunta .. es que no entiendo.. yo tengo una pagina web en php
.. como hago para que la vista que esta en postgres tome esta variable..

Lo que entiendo en tu respuesta es algo paracedio a lo que hace acces.. en
la consulta o vista uno tan solo amarra el campo del formulario donde esta
el parametro que desea pasar.. eso se puede hacer en postgress.. si es asi
me puedes decir como?

2009/1/27 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

> yanguma escribió:
>
> > Tengo una vista que me obtiene los datos de una base de datos de 1 millon
> de
> > registro, esa vista tiene un campo que es el periodo, los informes o lo
> que
> > el usuario final desea ver se base en esta consulta, pero siempre ve toda
> la
> > información y no la que necesita, entonces opte por pasarle parmetros
> > atravez de una tabla que toma los datos que el usuario consulta.. Esta es
> la
> > forma correcta?
>
> No. Lo más razonable es que el usuario agregue un WHERE con los filtros
> que necesita (o mejor dicho, la aplicación lo hace). De esta forma, el
> optimizador puede producir el mejor plan automáticamente. Cualquier
> clase de cosa que hagas con funciones va a tener necesariamente peor
> rendimiento.
>
> --
> Alvaro Herrera
> http://www.amazon.com/gp/registry/3BP7BYG9PUGI8
> "Las navajas y los monos deben estar siempre distantes" (Germán Poo)
>

--
prueba


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametro en vista
Date: 2009-01-27 21:26:28
Message-ID: 20090127212628.GM6444@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

yanguma escribió:

> Alvaro una pregunta .. es que no entiendo.. yo tengo una pagina web en php
> .. como hago para que la vista que esta en postgres tome esta variable..

Postgres no "toma" variables. Lo que tu código en PHP hace es generar
un trozo de SQL, que le entrega a Postgres para que la ejecute y
entregue los resultados. En ese código SQL es que tú (el programador)
debes poner las variables según sea apropiado.

--
Alvaro Herrera Valdivia, Chile Geotag: -39,815 -73,257
"Saca el libro que tu religión considere como el indicado para encontrar la
oración que traiga paz a tu alma. Luego rebootea el computador
y ve si funciona" (Carlos Duclós)