Re: Join table with itself for heirarchial system?

From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: Benjamin Smith <bens(at)effortlessis(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Join table with itself for heirarchial system?
Date: 2003-07-20 07:44:49
Message-ID: Pine.GSO.4.56.0307201144080.724@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

You might look on our contrib/ltree module
(http://www.sai.msu.su/~megera/postgres/gist/ltree)

Oleg
On Wed, 16 Jul 2003, Benjamin Smith wrote:

> Can you query a set of nested entries to simulate a heirarchial system with a
> single query?
>
> I'm building a nested category table with a definition like below"
>
> CREATE TABLE category (
> id serial,
> parent integer not null,
> title varchar);
>
> Idea is that we can "nest" categories so that we have
>
> id parent title
> ----------------------------------------------
> 1 0 Clothing
> 2 1 Shirts
> 3 1 Pants
> 4 1 Socks
> 5 4 Male
> 6 4 Silk
>
> So that, for example, id 6 would be
>
> Clothing -> Socks -> Silk.
>
> So far, I've only been able to derive this with 3 queries - 1 to get the
> parent for id #6 (Silk) another to get the parent for id #4 (Socks) and
> finally for id #1 (Clothing) and since parent ==0 I stop.
>
> This seems wasteful - can this be done in a single query?
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Bruce Momjian 2003-07-21 03:47:04 Re: inet versus text for ip addresses
Previous Message Stephan Szabo 2003-07-20 06:26:28 Re: min() and NaN