很久没写SQL语句了.有点不会了!
表A
id name parentid depth
1 移动设备 0 1
2 电脑周边 0 1
3 大家电 0 1
4 无线路由 1 2
5 无线网卡 1 2
6 冰箱 3 2
要按父-子关系来排列
id name parentid depth
1 移动设备 0 1
4 无线路由 1 2
5 无线网卡 1 2
2 电脑周边 0 1
3 大家电 0 1
6 冰箱 3 2
首先按顶级分类排列.每个分页下是他们的子分类列表
------解决思路----------------------
--上面有个错误
with cte as
(select *,rn=convert(varchar,row_number() over (order by id)) from A where parentid=0
union all
select A.*,convert(varchar,rn+'-'+convert(varchar,A.id)) from A,cte t where A.parentid=t.id)
select * from cte order by rn
------解决思路----------------------
要求没太明白,,可以再清楚一些吗
------解决思路----------------------
;WITH CTE AS(
SELECT id,name,parentid,depth
,CAST(id+'-' AS VARCHAR(8000))[Path]
FROM A
WHERE parentid=0
UNION ALL
SELECT T1.id,T1.name,T1.parentid,T1.depth
,T2.[Path]+CAST(T1.id+'-' AS VARCHAR(8000))
FROM A T1
JOIN CTE T2 ON T1.parentid=T2.id
)
SELECT id,name,parentid,depth
FROM CTE
ORDER BY [Path]