首页 新闻 会员 周边 捐助

急,全部家当 求SQL 语句

0
悬赏园豆:50 [已解决问题] 解决于 2012-07-30 14:45
IF OBJECT_ID('[Navigation]') IS NOT NULL DROP TABLE [Navigation]
GO

CREATE TABLE Navigation
(
    NavID INT PRIMARY KEY NOT NULL,
    NavName VARCHAR(50),
    ParentID int  --为0表示顶级节点
)

INSERT Navigation
SELECT 1,'节点1',0 UNION ALL
SELECT 2,'节点2',0 UNION ALL
SELECT 3,'节点3',0 UNION ALL
SELECT 4,'节点1-1',1 UNION ALL
SELECT 5,'节点4',0 UNION ALL
SELECT 6,'节点3-1',3 UNION ALL
SELECT 7,'节点3-2',3 UNION ALL
SELECT 8,'节点4-1',5 UNION ALL
SELECT 9,'节点1-2',1 UNION ALL
SELECT 10,'节点2-1',2
go

SELECT * FROM Navigation
/*
如何得到如下结果(最好别用存储过程)
NavID     NavName   ParentID
1        节点1     0
4        节点1-1   1
9        节点1-2   1
2        节点2     0
10       节点2-1   2
3        节点3     0
6        节点3-1   3
7        节点3-2   3
5        节点4     0
8        节点4-1   5
*/
暗尘掩月的主页 暗尘掩月 | 初学一级 | 园豆:183
提问于:2012-07-29 12:06
< >
分享
最佳答案
0

select NavID,NavName ,ParentID  from (select NavID,NavName ,ParentID, (case when ParentID = 0 then NavID else ParentID end) as pid  from Navigation) a order by pid,navid

收获园豆:50
Tom.汤 | 老鸟四级 |园豆:3058 | 2012-07-29 16:23

如果 在加一个Sort字段  在ParentID 相同的情况下 按Sort排序  应该怎么改 谢谢!

暗尘掩月 | 园豆:183 (初学一级) | 2012-07-30 09:28

@暗尘掩月: 在PID后面加一个sort就可以

Tom.汤 | 园豆:3058 (老鸟四级) | 2012-07-30 12:25
其他回答(2)
0

SELECT * FROM Navigation order by NavName

悟行 | 园豆:12559 (专家六级) | 2012-07-29 13:40
0

请问你上面所谓的 '节点1' 的那个节点是否是固定的   你要的那个排序结果有什么规则

JCdon | 园豆:2 (初学一级) | 2012-07-29 16:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册