我有一個菜單系統的表,它具有以下結構和一些數據。菜單系統的遞歸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