1

我有一个菜单系统,其中每个项目都可以有一个父项。所以结构是这样的

在此处输入图像描述

我想要做的是显示当前页面的链接的“面包屑”样式列表。因此,如果用户在 ~/CVR.aspx 上,我希望显示以下内容:

CVR 控制 - CVR

所以我需要一个 SQL 查询,它会递归地获取所有父菜单项的列表,直到一行上的父项为空)。

有任何想法吗?

4

1 回答 1

0

对于 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
于 2012-10-11T11:37:32.527 回答