sql - 使用 SQL 查询的 TreeView

标签 sql join treeview common-table-expression self

我有一个区域表,我想要一个 TreeView (表简单地按树排序)是否可以使用sql查询帮助表示赞赏,我尝试使用自连接来做到这一点,但我没有得到所需的结果。

enter image description here

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/

相关文章:

sql - 嵌套连接隐藏表名

java - 设置 SWT.FULL SELECTION 时,SWT TreeViewer 同时展开和折叠

java - SQL - PreparedStatement - 效率 - JDBC

sql - PostgreSQL:间隔 '10 DAY' 和当前行之间的范围

php - 查看与您的 MariaDB 服务器版本对应的手册,了解在 '"Array"SQL 附近使用的正确语法

MySQL 连接和第二个表中的字段作为结果中的列

SQL 计算基于字段类型和分组类型

c# - 访问嵌套 View 模型中的变量

c# - 将图标添加到 TreeViewItem

带有格式化文本的 c# Treeview 节点,例如制表符和新行