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>
: 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));
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
