【发布时间】:2020-07-05 09:08:56
【问题描述】:
假设我有一个看起来像这样的数据库
id |Name | Type | budget | parentId |
1 | a | 1 | 5000 | null |
2 | b1 | 2 | 2200 | 1 |
3 | c2 | 2 | 2800 | 1 |
4 | b_1 | 3 | 1000 | 2 |
5 | b_2 | 3 | 1200 | 2 |
6 | c_1 | 3 | 1600 | 3 |
7 | c_2 | 3 | 1200 | 3 |
我想要的输出是这样的:
Name | Type | Budget | ParentName
a | 1 | 5000 | null
b1 | 2 | 2200 | a
b_1 | 3 | 1000 | b1
b_2 | 3 | 1200 | b1
c1 | 2 | 2800 | a
c_1 | 3 | 1600 | c1
c_2 | 3 | 1200 | c1
我该怎么做呢?
需求本质上是按父类型分组的,由类型 1 或 null 父 id 表示。从那里首先将类型 2 分组到类型 1 下方,然后将类型 2 的所有子类型 3 分组为每个类型 2 下方的父级。
这有点像一场噩梦,我尝试使用 COALESCE,但在尝试使用它时对语法有点困惑
1
2
3
3
2
3
3
3
2 ..
等等
这里的任何帮助都会很有用。
注意:类型 1 永远不会有父对象,类型 2 将始终具有类型 1 的父对象,类型 3 将始终具有类型 2 的父对象。
谢谢,
【问题讨论】:
-
这个层次结构有多少层?
-
@forpas 仅 3.
标签: sql postgresql