Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 在邻接列表表中查找子体深度_Oracle_Oracle10g_Hierarchical Data - Fatal编程技术网

Oracle 在邻接列表表中查找子体深度

Oracle 在邻接列表表中查找子体深度,oracle,oracle10g,hierarchical-data,Oracle,Oracle10g,Hierarchical Data,问题 SELECT MAX(level) "LEVEL" FROM TEST_TABLE START WITH category_id = 7 -- MP3 Players category_id CONNECT BY category_id = PRIOR parent ORDER BY LEVEL DESC 示例表 +-------------+----------------------+--------+ | category_id | name | p

问题

SELECT MAX(level) "LEVEL"
FROM TEST_TABLE
START WITH category_id = 7 -- MP3 Players category_id
CONNECT BY category_id = PRIOR parent
ORDER BY LEVEL DESC
示例表

+-------------+----------------------+--------+
| category_id | name                 | parent |
+-------------+----------------------+--------+
|           1 | ELECTRONICS          |   NULL |
|           2 | TELEVISIONS          |      1 |
|           3 | TUBE                 |      2 |
|           4 | LCD                  |      2 |
|           5 | PLASMA               |      2 |
|           6 | PORTABLE ELECTRONICS |      1 |
|           7 | MP3 PLAYERS          |      6 |
|           8 | FLASH                |      7 |
|           9 | CD PLAYERS           |      6 |
|          10 | 2 WAY RADIOS         |      6 |
+-------------+----------------------+--------+
根据上面的示例表,我认为在Oracle中,我应该能够按照“SELECT…CONNECT BY”来编写SQL,以查找给定id的级别。例如,“MP3播放器”的级别为3

借鉴

解决方案

SELECT MAX(level) "LEVEL"
FROM TEST_TABLE
START WITH category_id = 7 -- MP3 Players category_id
CONNECT BY category_id = PRIOR parent
ORDER BY LEVEL DESC

您可以使用
level
pseudocolumn获取当前行的“深度”。考虑下面的陈述:

SELECT category_id, name, level,
 PRIOR name as parent_category
FROM test_table
START WITH parent is null
CONNECT BY PRIOR category_id = parent

这是朝着正确的方向迈出的一步:更具体地说,我正在寻找能够为我提供特定id级别(例如7)的SQL。在我自己做了一些额外的搜索之后,我将我提出的解决方案添加到了最初的问题中。