Re: Ayuda con base de datos de busquedas

From: Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>
To: rmero(at)marzam-online(dot)com,pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con base de datos de busquedas
Date: 2006-09-25 23:04:14
Message-ID: 20060925225654.M15266@fcm.unc.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Mon, 25 Sep 2006 16:41:25 -0500, Raúl Mero Moreira wrote
> me encantaria sabes si me la hicieras llegar

Aquí te la mando. ;)

> bueno la forma de como hacer el buscador no era la repuesta pero es
> el 50% que me haz alivianado claro que si es mejorado te hare llegar
> eso tambien

Me encantaría!. Seguramente que se puede mejorar bastante.

> en si lo que queria saber es como tengo que estructurar la base de
> datos, que tan factible es alzar el codigo o si ya lo haz hecho,
> espero que me entiendas

¿Te refieres a la estructura de las tablas?. ¿Qué se entiende por "que tan
factible es alzar el código"?. Perdón pero sinceramente no entiendo bien eso.
Saludos...
------------
CREATE OR REPLACE FUNCTION buscador(varchar, integer, char(2), varchar)
RETURNS SETOF busqueda AS $$
DECLARE
result RECORD;
sql varchar := 'SELECT DISTINCT p.id, t.id, p.foto, p.apellido, p.nombre,
p.email, a.nombre, pa.nombre, p.universidad_trabaja, t.tema, t.recursos, t.trans
ferencia, t.productos, t.links FROM persona p, pais pa, trabajo t, area a WHERE';
num_arg int := 0;
BEGIN
IF $1 != '' THEN
num_arg := num_arg + 1;
sql := sql || ' ((p.apellido ILIKE \'%'||$1||'%\') OR (p.nombre ILIKE
\'%'||$1||'%\')) AND p.id = t.persona_id AND p.pais = pa.codigo AND t.area_id = a.
id AND p.publicado = \'t\'';
END IF;
IF $2 > 0 THEN
IF num_arg > 0 THEN
sql := sql || ' AND a.id = '||$2;
num_arg := num_arg + 1;
ELSE
sql := sql || ' p.id = t.persona_id AND t.area_id = '||$2||' AND p.pais
= pa.codigo AND t.area_id = a.id AND p.publicado = \'t\'';
num_arg := num_arg + 1;
END IF;
END IF;
IF $3 != '' THEN
IF num_arg > 0 THEN
sql := sql || ' AND pa.codigo = \''||$3||'\'';
num_arg := num_arg + 1;
ELSE
sql := sql || ' pa.codigo = \''||$3||'\' AND pa.codigo = p.pais AND p.id
= t.persona_id AND t.area_id = a.id AND p.publicado = \'t\'';
num_arg := num_arg + 1;
END IF;
END IF;
IF $4 != '' THEN
IF num_arg > 0 THEN
sql := sql || ' AND p.universidad_trabaja ILIKE \'%'||$4||'%\'';
num_arg := num_arg + 1;
ELSE
sql := sql || ' p.universidad_trabaja ILIKE \'%'||$4||'%\' AND p.id =
t.persona_id AND t.area_id = a.id AND p.pais = pa.codigo AND p.publicado = \'t\'
';
num_arg := num_arg + 1;
END IF;
END IF;
IF num_arg > 0 THEN
sql := sql || ' ORDER BY 4, 5, 7, 8;';
ELSE
sql := 'SELECT DISTINCT p.id, t.id, p.foto, p.apellido, p.nombre, p.email,
a.nombre, pa.nombre, p.universidad_trabaja, t.tema, t.recursos, t.transferenc
ia, t.productos, t.links FROM persona p, pais pa, trabajo t, area a WHERE
p.publicado = \'t\' AND p.id = t.persona_id AND p.pais = pa.codigo AND t.area_id =
a.id ORDER BY 4, 5, 7, 8';
END IF;
FOR result IN EXECUTE sql LOOP
RETURN NEXT result;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql STABLE SECURITY DEFINER;

------------

> gracias

De nada amigo...

p/d: no te olvides que ahí figura con los nombres de mis tablas y mis campos.

-
-------------------------------------------
Sebastián Villalba
sebastian(at)fcm(dot)unc(dot)edu(dot)ar
-------------------------------------------

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message obed 2006-09-25 23:39:39 Re: Rv: Re: tabla corrupta
Previous Message jose ricardo 2006-09-25 23:01:17 Rv: Re: tabla corrupta