If you don't know how many nodes you're going to have and the amount of branches under each node, then that's the only way to do it. However, if you can define those numbers, you can use something like the following. A manager would have 50 numbers, for example. So, rather than counting through the tree to determine left and right pairs, the first manager simply has left:1 and right:51. Now, a section leader (SL) under him has 10 numbers (so a manager can have 5 section leaders). The first section manager would have 2 - 11, the second 12 - 21, etc. Now each section leader can have an employee (E) that gets an adjacent left and right pair (so they are a "leaf" with nothing under them). Something like this, hopefully the formatting remains. Manager 1 50 | / \ SL SL 2 11 12-21 | | / \ E E E 13-14 3-4 5-6 So if you count around the tree, you see it still goes in order, but it leaves holes where you can "fill" people in. So, if you can assign specific limits like that, to add a new section leader under this manager, you simply select the largest "right" number for the current section leaders, which will be 21, and add 10 to that, so the "new" section leader would have numbers 22-31. Manager 1 50 | / \ / | \ SL SL SL 2 11 12 21 22 31 | | / \ E E E 13-14 3-4 5-6 That's probably confusing, but it works on paper for well defined trees. I can explain in more detail if you're interested, but I don't know if it applies to your situation or not. ---John Holmes... ----- Original Message ----- From: "José Moreira" <jmoreira@e-terno.net> To: "Php-Db (Correio electrónico)" <php-db@lists.php.net> Sent: Thursday, December 19, 2002 11:45 AM Subject: trees in MySQL > hello im implementing a portal and im choosing between the 'Nested Set' and > 'Adjacency Lists tree' models. > <http://users.starpower.net/rjhalljr/Serve/MySQL/traer.html> > > > im perfectly aware of the 'Adjacency Lists tree' model how-to and I am > studying the 'Nested Set', example follows : > > CREATE TABLE LanguageTree ( > > Language VARCHAR(255) PRIMARY KEY > , Parent VARCHAR(255) > , Lft LONG > , Rgt LONG > , INDEX idxLft (Lft) > , INDEX idxRgt (Rgt) > ) Comment = "Related languages"; > > > A[1 12] > / \ > / \ > B[2 3] C[4 11] > / \ > / \ > D[5 8] F[9 10] > | > E[6 7] > > > my doubt is that if i want to insert a new node, for example 'G' under 'A' > > A[1 12] > / | \ > / \ > B[2 3] G[] C[4 11] > / \ > / \ > D[5 8] F[9 10] > | > E[6 7] > > > i have? to update almost every left,righ fields after that node, resulting > in a website performance downgrade .... > > > help? even if thjats the only way, how can i do it? perhaps im getting it > wrong ... > > > best regards > > > José Moreira > TEGOPI S.A. > http://www.tegopi.pt > > > > > > > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php