Re: consulta de validacion de inexistencia de campos

From: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
To: Marcos Saldivar <baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com>
Cc: List Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: consulta de validacion de inexistencia de campos
Date: 2008-03-16 08:34:08
Message-ID: 91506.33305.qm@web63703.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Marcos Saldivar
<baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com> escribió:

> 2008/3/15, Gabriel Hermes Colina Zambra
> <hermeszambra(at)yahoo(dot)com>:
> [..]
> >
> > Ahora lo cambiamos por esto
> >
> >
> > select max(case when rut=$1 then 1 else 0 end) as
> > r_rut,max(case when nombre=$2 then 1 else 0 end)
> as
> > r_nombre,max(case when username=$3 then 1 else 0
> end
> >
> > as r_username) from vista_empleado
> > where rut=$1 or nombre=$2 or username=$3
> >
> >
> > Entonces te va a devolver una sola fila con los
> > maximos, si el maximo es 0 entonces no coincide
> en ese
> > campo, si es uno, por lo menos hay uno en ese
> campo.
> > Si quisieras saber cuanto lo tienes repetido
> podrias
> > hacer sum.
> >
> > Este te devuelve un solo registro.
>
> Estimado esta solucion esta perfecta y al parecer
> mucho mas eficiente
> que la de la union ya que mi poco conocimiento de
> usar explain analyze
> gano por lejos...
>
> select
> max(case when rut='15233655-0' then 1 else 0 end)
> as r_rut,
> max(case when nombre='vida guerra' then 1 else 0
> end) as r_nombre,
> max(case when username='conexion' then 1 else 0
> end) as r_username
> from
> vista_empleados
> where
> rut='15233655-0' or nombre='vida guerra' or
> username='conexion'
>
> Gracias y vere si cambio mi codigo a esta solucion,
> saludos.-
>
Bueno entonces te doy una yapa, pero cuidado que
alguien con mas experiencia y tiempo seguro proponga
algo mejor.

Me gustaria que trabajaras con squemas, si tu proyecto
crece, entre otras ventajas vas a tener todo mas
organizado y legible.

CREATE OR REPLACE FUNCTION
"central"."fnc_vista_empleados" (crut varchar, cnombre
varchar, cusername varchar) RETURNS SETOF
"vista_empleado" AS
$body$
select max(case when rut=crut then 1 else 0 end)as
rut,max(case when nombre=cnombre then 1 else 0
end) as nombre,max(case when username=cusername then 1
else 0 end) as username from vista_empleados where
rut=crut or nombre=cnombre or
username=cusername
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
INVOKER;

Lo cual te devuelve un recordset, pasandole los
parametros con select * from
fnc_vista_empleado('15233655-0','vida
guerra','conexion');

Un par de consejos, por las dudas espera por una mejor
solucion antes de cambiar, seguro que debe de haber,
pero es fin de semana y en el foro la actividad baja,
yo estoy metido hasta las manos en tres proyectos de
postgresql y visual basic y las horas de la madrugada
para ver la lista la estoy empleando para aprender
gambas, asi que imaginate que estoy como borracho, no
es escusa, es real.

El otro consejo es que uses algo que compare todo en
minuscula o mayuscula para no distinguir entre ellas,
si es que no tenes un trigger que haga la conversion
para grabarlo.

Comentario aparte y OT, me gusto mucho tu forma de
conducirte, fue critica pero no arrogante, defensiva
pero correcta.

Respetaste las reglas de la netiquette no haciendo
top-posting y encima despues de que te gusto la
solucion publicaste el resultado.

Este es un excelente foro y es un placer que se
integre gente con buenos habitos

Vas a llegar lejos, ojala todos hicieran lo mismo en
todos los foros.

Atte.
Gabriel Colina

____________________________________________________________________________________
¡Capacidad ilimitada de almacenamiento en tu correo!
No te preocupes más por el espacio de tu cuenta con Correo Yahoo!:
http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rubén F. Santiago 2008-03-16 14:47:49 gran cantidad texto
Previous Message Marcos Saldivar 2008-03-16 02:38:31 Re: consulta de validacion de inexistencia de campos