我有一个区域表,我想要一个 TreeView (表简单地按树排序)是否可以使用sql查询帮助表示赞赏,我尝试使用自连接来做到这一点,但我没有得到所需的结果。
TreeView 是这样的
独立
- 第 1 部分
- Zon1
- div2
- 区域2
- div3
- 区域3
编辑:
根据 Charles Bretana 的建议,我在下面的查询中尝试了 CTE,但它没有给我想要的结果。
WITH Emp_CTE (id, ParentID, name)
AS (
SELECT id, ParentID, name
FROM eQPortal_Region
WHERE ParentID=0
UNION ALL
SELECT e.id, e.ParentID, e.name
FROM eQPortal_Region e
INNER JOIN Emp_CTE ecte ON ecte.id = e.ParentID
)
SELECT *
FROM Emp_CTE
GO
这就是结果..出了什么问题?
InDiv1
- 第 1 部分
- Div2
- Div3
- Zon3
- Zon2
- 区域1
最佳答案
这个人Maulik Dhorajia完美地回答了这个问题......
http://maulikdhorajia.blogspot.com/2012/06/sql-server-using-ctecommon-table.html
制作了查询的副本..
;WITH CTECompany
AS
(
SELECT
ID,
ParentID,
Name ,
0 AS HLevel,
CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),ID),20) AS VARCHAR(MAX)) AS OrderByField
FROM Region
WHERE ParentID = 0
UNION ALL
SELECT
C.ID,
C.ParentID,
C.Name ,
(CTE.HLevel + 1) AS HLevel,
CTE.OrderByField + CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),C.ID),20) AS VARCHAR(MAX)) AS OrderByField
FROM Region C
INNER JOIN CTECompany CTE ON CTE.ID = C.ParentID
WHERE C.ParentID IS NOT NULL
)
-- Working Example
SELECT
ID
, ParentID
, HLevel
, Name
, (REPLICATE( '----' , HLevel ) + Name) AS Hierachy
FROM CTECompany
ORDER BY OrderByField
关于sql - 使用 SQL 查询的 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631194/