【发布时间】:2022-11-16 18:15:35
【问题描述】:
我有一个二叉树,其中设备连接到节点(通过邻接表连接)。我正在尝试将设备的价值与其下游的设备进行比较。我在获取下游设备时遇到问题。
假设我有一张桌子:
| DEVICE | NODE | PARENT_NODE | LEVEL |
|---|---|---|---|
| 1 | a | null | 1 |
| null | b | a | 2 |
| null | c | b | 3 |
| 2 | d | c | 4 |
| 3 | e | d | 5 |
| 9 | m | b | 3 |
| null | n | m | 4 |
| 7 | o | n | 5 |
我将如何将最近的下游设备加入每个设备行?我期待着:
| DEVICE | DOWNSTREAM_DEVICE |
|---|---|
| 1 | null |
| 2 | 1 |
| 3 | 2 |
| 9 | 1 |
| 7 | 9 |
一些假设:设备或节点没有顺序(假设它们都是唯一的 ID)。 LEVEL 是层级。我正在使用 Oracle SQL。
我以为我可以只使用滞后函数来执行此查询,但显然由于树分支,这将行不通。我的错误结果如下:
| DEVICE | DOWNSTREAM_DEVICE |
|---|---|
| 1 | null |
| 2 | 1 |
| 3 | 2 |
| 9 | 3 <- wrong |
| 7 | 9 |
任何线索将不胜感激。
【问题讨论】:
标签: sql oracle hierarchy adjacency-list