The in example I posted, I'm calculating the depth in the select statement. The depth is determined by the order in which the row is returned. If I start from a child, the child is returned first (therefore it's 0). If I start from the parent (top level nav), the parent is 0. Consider this...
Typical nav.. (depth is in parenthesis). The tree is built from the top down. Home (0) -Products (1) - -Car (2) - -Truck (2) -Support (1) - -Software (2) - - -*Drivers *(3) Breadcrumbs... The tree is built from the bottom up. *Drivers *(0) -Software (1) - -Support (2) - - -Home (3) The "depth" is backwards. The depth is not a fixed column. Like I said... the solution hit me. The entire site's navigation is generated with the correct depth onAppStart(). I'll just cache it via a temp table. Jason Durham On Tue, Mar 29, 2011 at 2:14 PM, Dan G. Switzer, II <[email protected] > wrote: > > Why bother with cursors or temp tables at all and just sort across Depth > desc instead of Depth asc? > > -Dan > > On Tue, Mar 29, 2011 at 2:59 PM, Jason Durham <[email protected]> wrote: > > > > > Nevermind... all I could see were nails. I'll create a temp table for > the > > regular navigation and use that table for breadcrumbs (the depth is > > accurately created on that query). > > > > Jason Durham > > > > > > On Tue, Mar 29, 2011 at 1:44 PM, Jason Durham <[email protected]> > wrote: > > > > > I apologize if this is an inappropriate place to ask this question. > > > > > > I'm using a CTE for a recursive query to assemble navigation. In the > > CTE, > > > I'm creating a column that contains the depth of the navigation. This > > depth > > > is ultimately inserted into the class of an HTML element. I'm > > refactoring > > > how my breadcrumbs are created and want to use a similar method. The > > catch > > > is, breadcrumbs start from the bottom of a recursive tree and work > their > > way > > > up. This is causing undesired behavior on the depth calculation. The > > > bottom-most element is 0. It's parent is 1. It's grandparent is 2 > (and > > so > > > forth). I need to reverse the order of this field. > > > > > > I'm currently trying to use a cursor to loop back over the CTE and > update > > > the depth field manually. However, it appears that I'm I can't access > > the > > > data stored in the temporary table (CTE) from with in the cursor. > Should > > I > > > be going about this a different way? > > > > > > Here is the SQL... > > > > > > DECLARE @THEID INT > > > SET @THEID=88; > > > > > > DECLARE BC_Cursor CURSOR FOR > > > WITH Breadcrumbs(Navigation_ID, Parent_ID, Navigation_Name, Depth) AS > > > ( > > > SELECT Navigation_ID, Parent_ID, Navigation_Name, 0 > > > FROM Navigation > > > WHERE Navigation_ID = @THEID > > > > > > UNION ALL > > > > > > SELECT n.Navigation_ID, n.Parent_ID, n.Navigation_Name, bc.Depth+1 > > > FROM Navigation n > > > INNER JOIN Breadcrumbs bc > > > ON bc.Parent_ID = n.Navigation_ID > > > ) > > > SELECT * FROM Breadcrumbs OPTION (MAXRECURSION 8) > > > FOR UPDATE; > > > > > > DECLARE @maxRows int; > > > SET @maxRows = @@ROWCOUNT; <--- Will be used to renumber the depth > > > > > > OPEN BC_Cursor; > > > FETCH NEXT FROM BC_Cursor; > > > WHILE @@FETCH_STATUS = 0 > > > BEGIN > > > FETCH NEXT FROM BC_Cursor; <--- This prints each row. Instead > > of > > > outputting them, I need to update and ultimately return the whole > > (virtual) > > > table. > > > END; > > > CLOSE BC_Cursor; > > > > > > DEALLOCATE BC_Cursor; > > > > > > > > > Thanks in advance. > > > > > > > Jason Durham > > > > > > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:343388 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

