菜单系统的递归SQL

Ric*_*ACC 2 sql recursion

我有一个菜单系统表,具有以下结构和一些数据.

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引擎.

Ste*_*ins 7

仅限SQL服务器,但它听起来像是Common Table Expressions的工作.