2009/10/28 ReynierPM <[email protected]> > 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 >> <[email protected]> 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 >
Obviando el tema SGBD esta implementacion es independiente del motor me entiendes??? lo importante es el concepto o idea , una tabla con id's relacionados entre ellos.. Me hago entender? slds. JC -- Cumprimentos jchavez linux User #397972 on http://counter.li.org/ Jonathan Swift<http://www.brainyquote.com/quotes/authors/j/jonathan_swift.html> - "May you live every day of your life."
