gpt4 book ai didi

tsql - 如何使用hierarchyid sql显示所有递归结果

转载 作者:行者123 更新时间:2023-12-05 00:34:37 27 4
gpt4 key购买 nike

我有一个表类别:

 ID | NAME                  | PARENT ID    | POSITION   | LEVEL     | ORDER
----------------------------------------------------------------------------
1 | root | -1 | 0x | 0 | 255
2 | cars | 1 | 0x58 | 1 | 10
5 | trucks | 1 | 0x68 | 1 | 10
13 | city cars | 2 | 0x5AC0 | 2 | 255
14 | offroad cars | 2 | 0x5B40 | 2 | 255

哪里:

 ID int ident 
NAME nvarchar(255)
PARENT ID int
POSITION hierarchyid
LEVEL hierarchyid GetLevel()
ORDER tinyint

此表 model 指定模型名称和所属类别。示例:

 ID  | NAME      | CATEGORY
-----------------------------
1 | Civic | 13
2 | Pajero | 14
3 | 815 | 5
4 | Avensis | 13

哪里:

 ID int ident
NAME nvarchar(255)
CATEGORY int link to ID category table

我想做的是能够展示:

  1. 所有模型 - 将递归地显示根目录中的所有模型,
  2. 类别汽车中的模型(包括汽车)
  3. 来自城市汽车的模型(或其子模型,如果有的话)

如何使用 hierarchyid 进行此类过滤以及如何将结果表与模型连接起来?这是从某个级别显示所有模型结果的快速方法吗?

最佳答案

我相信这会给你想要的东西:

declare @id hierarchyid

select @id = Position from Categories where Name = 'root' -- or 'cars', 'city cars', etc.

select m.*
from Models m
join Categories c on m.Category = c.ID
where c.Position.IsDescendantOf(@id) = 1

有关 IsDescendantOf 方法和其他 hierarchyid 方法的更多信息,请查看 method reference .

关于tsql - 如何使用hierarchyid sql显示所有递归结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com