我有一个菜单系统的表,它具有以下结构和一些数据。菜单系统的递归SQL
ID, Text, ParentID, DestinationID 1, Applications, (null), (null) 2, Games, (null), (null) 3, Office, 1, (null) 4, Text Editing, 1, (null) 5, Media, (null), (null) 6, Word, 3, 1 7, Excel, 3, 2 8, Crysis, 2, 3
我需要的是一个查询,我可以通过菜单ID,它将返回有ID的子项的列表。但是,我需要它仅返回具有到目的地的有效路径的儿童。所以在上面的例子中,当用户选择应用程序时,他将被初始化为(应用程序,游戏),他被呈现给(Office)。文本编辑和媒体应该被省略,因为它们下面没有有效的目的地。
这个最棘手的事情是,没有任何给定菜单的预定深度。
编辑:
今天,问题就来了,对于MS SQL 2008年,但在过去的2个星期,我一直需要SQLite和SQL CE类似的解决方案。理想的解决方案不应该绑定到任何特定的SQL引擎。
DB什么您使用的是? – 2009-01-30 13:53:43
如何在导航中获得当前深度? – 2009-01-30 13:53:56
导航的实际深度是无关紧要的。每次迭代都被视为一个菜单。系统从空开始,并选择具有空父母的所有菜单项。进行选择时,当前菜单具有该ID,并用于过滤该菜单的项目。 – RichieACC 2009-01-30 13:59:28