我有一个树结构,以及随后的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)