【发布时间】:2015-03-18 00:34:49
【问题描述】:
更新
我有一个非常独特的案例,我从我的 SQL 数据库中获得了这个。
+------+-------+-------+-------+-------+
| LVL | LVL_1 | LVL_2 | LVL_3 | LVL_4 |
+------+-------+-------+-------+-------+
| PHIL | NULL | NULL | NULL | NULL |
| PHIL | BOB | NULL | NULL | NULL |
| PHIL | BOB | BILL | NULL | NULL |
| PHIL | BOB | BILL | JEN | NULL |
| PHIL | BOB | BILL | JEN | JOE |
+------+-------+-------+-------+-------+
最后一个包含名字的 LVL 列代表这个人。
例如,这代表PHIL
| PHIL | NULL | NULL | NULL | NULL |
这代表JEN
| PHIL | BOB | BILL | JEN | NULL |
这代表JOE(因为他是最后一级)
| PHIL | BOB | BILL | JEN | JOE |
我的最终目标是在我查询“PHIL”时将这些数据从 ColdFusion 返回到 JSON 树结构中:
{
name: 'PHIL',
parent: NULL,
level: 0,
groups: [
{
name: 'BOB',
parent: 'PHIL',
level: 1,
groups: [
{
name: 'BILL',
parent: 'BOB',
level: 2,
groups: [
{
name: 'JEN',
parent: 'BILL',
level: 3,
groups: [
{
name: 'JOE',
parent: 'JEN',
level: 4,
groups: []
}
]
}
]
}
]
}
]
}
如果我查询'BILL',我只能看到他下面的树数据是这样的:
{
name: 'BILL',
parent: 'BOB',
level: 2,
groups: [
{
name: 'JEN',
parent: 'BILL',
level: 3,
groups: [
{
name: 'JOE',
parent: 'JEN',
level: 4,
groups: []
}
]
}
]
}
我想编写一些 SQL 命令来生成这些数据的树形结构。如果不可能,我想至少将原始数据重新格式化(使用 SQL 命令):
+------+--------+
| NAME | PARENT |
+------+--------+
| PHIL | NULL |
| BOB | PHIL |
| BILL | BOB |
| JEN | BILL |
| JOE | JEN |
+------+--------+
所以我或许可以按照本教程 http://www.bennadel.com/blog/1069-ask-ben-simple-recursion-example.htm 使用 ColdFusion 将其重组为树数据
有可能吗?有人可以帮我解决这个问题吗?
【问题讨论】:
-
第 1 步是编写一个获取数据的查询。要获得帮助,请编辑您的问题以显示数据库结构的相关部分。
-
看看 CTE 是如何工作的:technet.microsoft.com/en-us/library/…。但还要检查这是否是最好的分层模型。无论您决定什么,数据库处理都属于数据库,但不属于 CFML 方面。
-
“groups”数组的顺序重要吗?
-
groups 数组的顺序无关紧要
-
它们是从SQL数据库的表中给出的列名
标签: sql sql-server recursion coldfusion tree