我有一个菜单系统表,具有以下结构和一些数据.
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上,但在过去两周内,我需要针对SQLite和SQL CE的类似解决方案.理想的解决方案不应该绑定到任何特定的SQL引擎.
仅限SQL服务器,但它听起来像是Common Table Expressions的工作.