Hi, I'm trying the "nested set model" to handle a tree structure in a database (reference: http://www.dbmsmag.com/9603d06.html). It has many advantages if you want to select all nodes above or below a specific node (recursive calls aren't necessary), but when you want to select only the first generation under a node, the query I found was a lot more complex than it would be if using the traditional adjacency model. Considering this example: CREATE TABLE skill ( key INTEGER NOT NULL, name VARCHAR(50) NOT NULL, left_n INTEGER NOT NULL, right_n INTEGER NOT NULL, PRIMARY KEY (key), CHECK (left_n > 0 AND right_n > left_n) ); insert into skill values (1 , 'Skills' , 1, 30); insert into skill values (2 , 'Computing' , 2, 29); insert into skill values (3 , 'Programming', 3, 10); insert into skill values (4 , 'C++' , 4, 5); insert into skill values (5 , 'Java' , 6, 7); insert into skill values (6 , 'Prolog' , 8, 9); insert into skill values (7 , 'Database' , 11, 18); insert into skill values (8 , 'Oracle' , 12, 13); insert into skill values (9 , 'PostgreSQL' , 14, 15); insert into skill values (10, 'Solid' , 16, 17); insert into skill values (11, 'Design' , 19, 28); insert into skill values (12, 'CorelDraw' , 20, 21); insert into skill values (13, 'Illustrator', 22, 23); insert into skill values (14, 'Photoshop' , 24, 25); insert into skill values (15, 'The Gimp' , 26, 27); How could we select, for example, only the nodes immediately under "computing"? The only way I could do it was using: select son.key, son.name, son.left_n from skill son, skill parent where parent.key = 2 and son.left_n between parent.left_n and parent.right_n and son.key <> parent.key and son.key not in (select son_descendents.key from skill parent, skill son, skill son_descendents where parent.key = 2 and son.left_n between parent.left_n and parent.right_n and son.key <> parent.key and son_descendents.left_n between son.left_n and son.right_n and son.key <> son_descendents.key) order by son.left_n ; Isn't there an easier way to achieve this?? With the usual adjacency model the query would look trivial! Something like: select son.key, son.name from skill son where son.parent = 2 ; Well, thanks in advance! -- Renato Sao Paulo - SP - Brasil [EMAIL PROTECTED] ---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly