SQL语句执行此问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:30:15
数据表如下
objid parentid title
1 0 根目录
2 1 首页
3 1 企业文化
4 1 新闻公告
5 1 产品展示
6 1 友情链接
7 3 公司简介
8 3 企业文化
9 4 重点新闻
10 4 高级新闻
其中parentid为父objid
用一条SQL语句显示

根目录
-首页
-企业文化
--公司简介
--企业文化
-新闻公告
--重点新闻
--高级新闻
-产品展示
-友情链接
我这个实现的是树型菜单
提示:有人给我说多几次join链接就可以
我怎么也系那个不起来
大家帮帮忙谢谢
一楼的
你当我问的什么?
2楼
join怎么链接?
3楼你没看明白题目吗?

用JOIN的办法只限于你能确定有多少层目录结构 这种办法是不完善的

对于你这个问题 可以这样 不用JOIN:
DECLARE @T TABLE(objid INT,parentid INT,title VARCHAR(10))
INSERT INTO @T SELECT 1,0,'根目录'
UNION ALL SELECT 2,1,'首页'
UNION ALL SELECT 3,1,'企业文化'
UNION ALL SELECT 4,1,'新闻公告'
UNION ALL SELECT 5,1,'产品展示'
UNION ALL SELECT 6,1,'友情链接'
UNION ALL SELECT 7,3,'公司简介'
UNION ALL SELECT 8,3,'企业文化'
UNION ALL SELECT 9,4,'重点新闻'
UNION ALL SELECT 10,4,'高级新闻'
--测试数据

SELECT CASE parentid WHEN 0 THEN ''WHEN 1 THEN '-' ELSE '--' END ,title
FROM @T ORDER BY (SELECT CASE WHEN parentid=1 THEN objid ELSE parentid END) ,objid

另外,我想了一个可以无限制级别的方法 ,不过需要用到自定义函数,我加了两个子目录,你可以看看
CREATE TABLE T(objid INT IDENTITY(1,1),parentid INT,title VARCHAR(10))
INSERT INTO T SELECT 0,'根目录'
UNION ALL SELECT 1,'首页'
UNION ALL