Re: Other tree representations in SQL

From: Damjan S. Vujnovic <damjan_at_NOSPAMgaleb.etf.bg.ac.yu>
Date: Wed, 4 Dec 2002 16:02:34 -0800
Message-ID: <asl5cf$4h7$1_at_news.etf.bg.ac.yu>


: For postorder:

:

: SELECT :my_root, T1.*
: FROM Tree AS T1, Tree AS T2
: WHERE T2.node = :my_root
: AND T2.seq > T1.seq
: AND T1.level > T2.level
: AND T1.seq
: >= COALESCE((SELECT MAX(T3.seq)
: FROM Tree AS T3
: WHERE T3.level = T2.level
: AND T3.seq < T2.seq),
: (SELECT MIN(seq) FROM Tree));

Of course, if [seq] always starts with 1, then we could use:

SELECT :my_root, T1.*
  FROM Tree AS T1, Tree AS T2

 WHERE T2.node = :my_root
   AND T2.seq > T1.seq
   AND T1.level > T2.level
   AND T1.seq
       >= COALESCE((SELECT MAX(T3.seq)
                      FROM Tree AS T3
                     WHERE T3.level = T2.level
                       AND T3.seq < T2.seq), 1);

regards,
Damjan S. Vujnovic

University of Belgrade
School of Electrical Engineering
Department of Computer Engineering & Informatics Belgrade, Yugoslavia

http://galeb.etf.bg.ac.yu/~damjan/ Received on Thu Dec 05 2002 - 01:02:34 CET

Original text of this message