Re: consulta de validacion de inexistencia de campos

From: "Marcos Saldivar" <baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com>
To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(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 02:38:31
Message-ID: 1c4d91ab0803151938y5b51230fo272ff7167b9504eb@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.-

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2008-03-16 08:34:08 Re: consulta de validacion de inexistencia de campos
Previous Message Gabriel Hermes Colina Zambra 2008-03-16 02:09:31 Re: consulta de validacion de inexistencia de campos