Skip site navigation (1) Skip section navigation (2)

Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] SOT: Ayuda con diseño de BD

From: ReynierPM <rperezm(at)uci(dot)cu>
To: Jose Luis Balle <joseluisballe(at)gmail(dot)com>
Cc: "Javier Chávez B(dot)" <jchavezb(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] SOT: Ayuda con diseño de BD
Date: 2009-10-28 14:48:50
Message-ID: 4AE859D2.4040503@uci.cu (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Jose Luis Balle wrote:
> Lo Prometido.
> La tabla:
> CREATE TABLE items
> (
>   id serial NOT NULL,
>   padre bigint NOT NULL,
>   nombre character varying(300) NOT NULL,
>   descripcion text,
>   CONSTRAINT items_pkey PRIMARY KEY (id)
> )
> WITH (OIDS=TRUE);
> 
> La función, en realidad como recursiva, tantas veces como sea
> necesario hasta llegar a la última hoja -1  que es la hoja en sí, el
> registro.
> CREATE OR REPLACE FUNCTION getancestor(este character varying, item integer)
>   RETURNS character varying AS
> $BODY$
> DECLARE
> retorno integer;
> BEGIN
> SELECT padre INTO retorno FROM items WHERE id=item;
> IF  NOT FOUND OR retorno=0 THEN
> 	return este;
> ELSE
> 	return getancestor(retorno::varchar||'.'||este,retorno);
> END IF;
> END;
> $BODY$
>   LANGUAGE 'plpgsql' STABLE
>   COST 100;
> ALTER FUNCTION getancestor(character varying, integer) OWNER TO user;
> 
> Y no anda tan mal, 391ms sobre 1678 filas, lo que en realidad me toma
> mucho tiempo es una vista que me sumariza cada hoja del árbol
> Seq Scan on items  (cost=0.00..480.28 rows=1678 width=159)
> 
> En fin, no se si es lo mejor pero por ahora me sirve.
> Voy a investigar tu recomendación Alvaro, gracias.
> Saludos
> 
> El día 27 de octubre de 2009 23:00, Alvaro Herrera
> <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> 
> 
> 

Gracias por la respuesta Jose Luis, casi lo he comprendido todo, solo me 
resta la parte de darme cabezazos intentando realizarlo. Ahora, va sonar 
un poco mal en este ámbito y quizás me quieran matar, pero me han pedido 
que no sea PostgreSQL sino que sea MySQL ¿alguna idea al respecto? ¿es 
el mismo basamento?

-- 
Saludos
ReynierPM

In response to

Responses

pgsql-es-ayuda by date

Next:From: Javier Chávez B.Date: 2009-10-28 14:55:39
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql
Previous:From: susoDate: 2009-10-28 14:39:05
Subject: Re: otra de auditoría

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group