我有一个菜单系统,其中每个项目都可以有一个父项。所以结构是这样的
我想要做的是显示当前页面的链接的“面包屑”样式列表。因此,如果用户在 ~/CVR.aspx 上,我希望显示以下内容:
CVR 控制 - CVR
所以我需要一个 SQL 查询,它会递归地获取所有父菜单项的列表,直到一行上的父项为空)。
有任何想法吗?
对于 SQL-Server,您可以使用简单的 CTE 执行此操作:
WITH MenuCTE AS
(
SELECT Id, parent, Text, Url
FROM menu
WHERE Id = 8
UNION ALL
SELECT p.Id, p.parent, p.Text, p.Url
FROM MenuCTE c
INNER JOIN menu p ON c.parent = p.id
)
SELECT *
FROM MenuCTE ;
例如对于 id = 8 这应该给你:
Id parent Text Url
8 6 CVR ~/cvr.aspx
6 NULL CVR Control ~/CVRDashboard.aspx