Обсуждение: A SQL Training

Поиск
Список
Период
Сортировка

A SQL Training

От
Devrim GUNDUZ
Дата:
Hi,

Today, one of my teacher asked me a question for a practice... I could not 
solve it :)

Here it comes:

We are given the name of the grandfather in a family. Let's call him A. A 
has n sons, each son has children .

for example.      A -> Grandfather         / \        /   \             B     C      /\   / \ \              /  \ D  E
F          G   H               ...
 

We are given the data like ('A','B'),('C','D')...

Now, we do not know how many children are in the list. How could we list 
this family tree in "tree" formt by only using SQL?

Best regards.





-- 

Devrim GUNDUZ

devrim@oper.metu.edu.tr
devrim.gunduz@linux.org.tr

Web : http://devrim.oper.metu.edu.tr
-------------------------------------





Re: A SQL Training

От
Josh Berkus
Дата:
Devrim,

> Today, one of my teacher asked me a question for a practice... I could not
> solve it :)
>
> Here it comes:
>
> We are given the name of the grandfather in a family. Let's call him A. A
> has n sons, each son has children .
etc.

In a month or so, I will be posting an article on advanced tree structure
(based on Joe Celko's work) in PostgreSQL.

Until then, buy a copy of SQL for Smarties, 2nd ed. by Joe Celko.  He has two
chapters on tree structure.

--
-Josh BerkusAglio Database SolutionsSan Francisco



Re: A SQL Training

От
Achilleus Mantzios
Дата:
On Tue, 16 Jul 2002, Devrim GUNDUZ wrote:

You need to identify your problem: preorder traversal on a tree
using pointers for the fathers.
Then you have to prove (or prove the opposite) that SQL alone
is capable of expressing what you need.

BTW, Nested Sets are only good for "static" databases.
Pointers are good for intensively "dynamic" databases, but have some
performance problems (for instance traversing to the root).
A genealogical approach (just like Oleg's and Teodor's one in 
contrib/tree) seems the most attractive.
Also you can have your own setup using postgresql arrays
(The arrays could contain the path of ids of the nodes from
the specific node to the root).
All these probably have little to do with your problem
(which is a computational theory problem), but maybe useful
in other cases.

> 
> Hi,
> 
> Today, one of my teacher asked me a question for a practice... I could not 
> solve it :)
> 
> Here it comes:
> 
> We are given the name of the grandfather in a family. Let's call him A. A 
> has n sons, each son has children .
> 
> for example.
>           A -> Grandfather
>              / \
>             /   \
>               B     C
>           /\   / \ \ 
>               /  \ D  E  F
>             G   H
>                 ...
> 
> We are given the data like ('A','B'),('C','D')...
> 
> Now, we do not know how many children are in the list. How could we list 
> this family tree in "tree" formt by only using SQL?
> 
> Best regards.
> 
> 
> 
> 
> 
> 

-- 
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  achill@matrix.gatewaynet.com       mantzios@softlab.ece.ntua.gr