sqlserver遍历树形目录

guarentianxia11 2015-04-27 09:45:00
版主,不好意思,我问的是sqlserver的问题,但没找到相关的板块,只能在这发帖了,如果有sqlserver的板块,麻烦版主帮我移一下,谢谢了

我的网站分三级菜单,表的结构是这样设计的(nav_id,nav_name,nav_parentid),一级菜单的nav_parentid为0;二级的nav_parentid为他的上级(一级的nav_id)。
现在我要查询出其中某一个一级菜单下面所有的二级三级的ID,该怎么写sql语句呢?
select nav_id,nav_name from nav where nav_parentid=0;---这是查出的一级菜单
select nav_id,nav_name from gs_nav where nav_parentid=10;---这是查出的二级菜单
我现在要一次性查出所有属于ID=10下面的所有目录(包括一级的ID10)。
...全文
307 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
select * from gs_nav g1 inner join gs_nav g2 on g1.nav_id = g2.nav_parentid inner join gs_nav g3 on g2.nav_id = g3.nav_parentid where g1.nav_id =10
guarentianxia11 2015-04-27
  • 打赏
  • 举报
回复
查出的结果存在了lmenu中,我怎么在利用lmenu中的ID去查询另外一个表中的数据呢? 关系是:a.info_id=lmenu.nav_id
guarentianxia11 2015-04-27
  • 打赏
  • 举报
回复
我写出来了,下面是代码
--CTE递归查询
WITH lmenu(nav_id,nav_name,nav_parentid,level) as
(
SELECT top 100 nav_id,nav_name,nav_parentid,1 level FROM gs_nav where nav_id=68 order by nav_id
UNION ALL   
SELECT a.nav_id,a.nav_name,a.nav_parentid, b.level+1 FROM gs_nav a,lmenu b where a.nav_parentid= b.nav_id 
)
SELECT * from lmenu 
这个帖子可以结了,下面来的人我会给分的
guarentianxia11 2015-04-27
  • 打赏
  • 举报
回复
DECLARE @table int --定义变量
DECLARE @id int --定义变量
DECLARE My_Cursor CURSOR --定义游标
FOR (select nav_id from gs_nav where nav_parentid=68 or nav_id=68) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH FROM My_Cursor into @table ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
select nav_id,nav_name,nav_parentid from gs_nav where nav_parentid=@table
FETCH NEXT FROM My_Cursor into @table; --读取下一行数据
--set @id=id+@table
END
--select @id asaaaa
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO


这是我用游标写出来的,以前没用过游标,不知道怎么一次性全部获得里面的值。
guarentianxia11 2015-04-27
  • 打赏
  • 举报
回复
引用 4 楼 jasonkoom 的回复:
select * from gs_nav g1 inner join gs_nav g2 on g1.nav_id = g2.nav_parentid inner join gs_nav g3 on g2.nav_id = g3.nav_parentid where g1.nav_id =10
你这个方法没有查出我想要的值,不过你是第一个回复我的,就把分给你吧

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧