Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
60 CHAPTER 4: NESTED SETS MODEL OF HIERARCHIES Result part `A' `B' `C' `D' `E' `F' `G' `H' `I' `J' `K' `L' `M' `N' level_0 NULL `A' `A' `A' `B' `C' `C' `D' `F' `F' `H' `H' `J' `J' level_1 NULL NULL NULL NULL `A' `A' `A' `A' `C' `C' `D' `D' `F' `F' level_2 NULL NULL NULL NULL NULL NULL NULL NULL `A' `A' `A' `A' `C' `C' level_3 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL `A' `A' Both approaches are compact, easy to follow, and easy to expand to as many levels as desired. 4.3.3 Finding Oldest and Youngest Subordinates The nested sets model usually assumes that subordinates are ranked by age, seniority, or in some way from left to right among the immediate subordi- nates of a node. Because the adjacency model does not have a concept of such rankings, the following queries are not possible without extra columns to hold the rankings in the adjacency list model. Most senior subordinates are found by this query: SELECT Workers.member, ' is the most senior subordinate of ', :my_member FROM OrgChart AS Mgrs, OrgChart AS Workers WHERE Mgrs.member = :my_member AND Workers.lft = Mgrs.lft + 1; -- leftmost child Most junior subordinates are found by this query: SELECT Workers.member, ' is the least senior subordinate of ', :my_member FROM OrgChart AS Mgrs, OrgChart AS Workers WHERE Mgrs.member = :my_member AND Workers.rgt = Mgrs.rgt - 1; -- rightmost child