小编use*_*391的帖子

在sql server的Tree结构中查找子树下的所有叶节点

我有一个树结构,以及随后的sql server数据库中客户类别的分配表.

CustomerCategory (CategoryID, ParentId)
CustomerInCategory(CustomerID, CategoryID)
Run Code Online (Sandbox Code Playgroud)

如果CustomerCategory已为其分配了任何客户,则我们无法向其添加其他子类别.因此,客户只能添加到每个子树中的最低级别.在其他意义上,这个查询的结果

SELECT * FROM `CustomerCategory` WHERE `CategoryId` NOT IN 
(SELECT DISTINCT `parentid` FROM `CustomerCategory` WHERE `parentid` IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)

会产生叶节点.另一方面,这棵树可能有不同级别的子树,而且我们也不想以任何方式限制级别数,但是,我们的用户不需要超过10个级别.以此为例

CategoryID------ParentID---------------Name
1               NULL                   All Customers
2               1                      Domestic
3               1                      International
4               2                      Independent Retailers
5               2                      Chain Retailers
6               2                      Whole Sellers
7               5                      A-Mart
8               5                      B-Mart
9               4                      Grocery Stores
10              4                      Restaurants
11              4                      Cafes

CustomerID---------CustomerName----------Category
1                  Int.Customer#1               3
2                  Int.Customer#2               3
3                  A-Mart.Branch#1              7
4                  A-Mart.Branch#2              7
5 …
Run Code Online (Sandbox Code Playgroud)

t-sql tree sql-server-2008

8
推荐指数
1
解决办法
6752
查看次数

标签 统计

sql-server-2008 ×1

t-sql ×1

tree ×1