SQL,可能有些难度

求一个SQL,可能有些难度
一张表TB 字段有
[菜单名]   [ 菜单ID]  [父菜单ID] 
是对一个菜单的描述,现在想得到的结果是
[子菜单名]    [子菜单ID] [父菜单名] [父菜单ID]

请大家帮忙指点一下。

------解决思路----------------------
引用:
Quote: 引用:

要看子菜单的级别,如果子菜单还有子菜单,那就要用递归的方法

对,是有菜单级别。
;WITH CTE AS(
SELECT T1.[菜单名][子菜单名],T1.[菜单ID][子菜单ID],''[父菜单名],T1.[父菜单ID]
,1[层级],CAST(T1.[菜单ID]AS VARCHAR(8000))[路径]
FROM TB T1 LEFT JOIN TB T2 ON T1.[父菜单ID]=T2.[菜单ID]
WHERE T2.[菜单ID] IS NULL
UNION ALL
SELECT T1.[菜单名][子菜单名],T1.[菜单ID][子菜单ID],T2.[菜单名][父菜单名],T1.[父菜单ID]
,T2.[层级]+1,T2.[路径]+'-'+CAST(T1.[菜单ID]AS VARCHAR(10))
FROM TB T1 JOIN CTE T2 ON T1.[父菜单ID]=T2.[菜单ID]
)
SELECT * FROM CTE
传统的CTE递归应用,你参考下
------解决思路----------------------
引用:
Quote: 引用:

要看子菜单的级别,如果子菜单还有子菜单,那就要用递归的方法

哥,看看我的帖子,谢谢,急求,我不会写,两三句话我就写不出来了。
你那破东西没个把月搞不出来
------解决思路----------------------
CTE的别名
------解决思路----------------------
递归啊。
就是每条被插入 menu 的记录,都会在 p 中出现一次。