【发布时间】:2018-01-03 10:32:36
【问题描述】:
我正在尝试通过 API 表示分层数据,并且正在寻找可以在 SQL 端实现的解决方案(从 API 调用的过程)。我有一列表示从最高父级到其子级的跟踪(“ID_Path”),并且正在尝试从分支中的项目向下排序。
为了解释,我有一个 ID 为 215548 的“袋子”物品,里面有 2 个直系孩子,每个下面都有一个孩子。解释:
ID: 215548
ID_Path: 215548 < 215467 < 215465 < 215428 < 0
因此,215548 是最高父级 0 的后代。215548 以下的子级是:
ID: 139269
ID_Path: 139269 < 215548 < 215467 < 215465 < 215428 < 0
和
ID: 262379
ID_Path: 262379 < 215548 < 215467 < 215465 < 215428 < 0
从这个例子中,你可以看到我是如何显示 ID 路径和层级关系的。但是,当我在 215548 上调用 API 时,我想看到 215548 的“级别”为 0,而 139269 和 262379 的“级别”为 1。我想知道如何在我的程序中进行解析以获取此信息结果。
在我的程序中,我目前有:
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[calculation_table]
@myid INT
AS BEGIN
SELECT * FROM ITEM WHERE ID_Path LIKE '%' + cast(@myid AS nvarchar) + '%'
END
如何处理处理级别?有没有办法可以从路径中的
感谢您的帮助。谢谢!
【问题讨论】:
-
你的路径是 nvarchar 吗?
-
如果是这样,我建议不要那样做。拥有您的
id列,并添加一个引用父项的id的parentId列,然后以这种方式构建层次结构。然后,您处理来自 2 列之一的 id 值,而不是剖析字符串值来解决它。
标签: c# sql sql-server parsing hierarchy