FW: Trees in SQL

Поиск
Список
Период
Сортировка
От Jackson, DeJuan
Тема FW: Trees in SQL
Дата
Msg-id F10BB1FAF801D111829B0060971D839F6D762A@cpsmail
обсуждение исходный текст
Список pgsql-sql

-----Original Message-----
From: Jackson, DeJuan
Sent: Wednesday, March 03, 1999 1:18 PM
To: 'Bartek Teodorczyk'
Subject: RE: Trees in SQL


> I'm trying to implement set model of trees in SQL and I found
> a problem:
>
> How to find first level children of parent?
>
> For this structure:
>
>             Jerry
>               |
>      -------------------
>      |                 |
>    Bert              Chuck
>                        |
>                  ------------
>                  |          |
>                Donna      Fred
>
> The question is: Who is first level child of Jerry?
> The answer should produce:
>     Bert
>     Chuck
>
> Maybe you know how to formulate the query?
>
> BarTeo

Assuming the above tree structure we have:

l | r | data
------------
1 |10 | Jerry
2 | 3 | Bert
4 | 9 | Chuck
5 | 6 | Donna
7 | 8 | Fred

What we need to do is find all children of Jerry that isn't a child of
anyone else who is a child of Jerry.
SELECT p1.*
FROM people p1, people p2
WHERE p2.l<p1.r AND p2.r>p1.r AND
      p2.data = 'Jerry' AND
      NOT EXISTS(SELECT 1 FROM people p3
                 WHERE p3.l<p1.r AND p3.r>p1.r AND
                       p2.l<p3.l AND p2.r>p3.r)

Results:
l|r|data
-+-+-----
2|3|Bert
4|9|Chuck

Hope this helps,
    -DEJ

В списке pgsql-sql по дате отправления:

Предыдущее
От: "Brett W. McCoy"
Дата:
Сообщение: return types in functions
Следующее
От: "Tim Perdue"
Дата:
Сообщение: Back end crash during vacuum