代码之家  ›  专栏  ›  技术社区  ›  orangepips 111111

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

  •  2
  • orangepips 111111  · 技术社区  · 14 年前

    示例表

    +-------------+----------------------+--------+
    | 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。。。按“查找给定id的级别。例如,“MP3播放器”的级别为3。

    借来的例子 Managing Hierarchical Data in MySQL

    解决方案

    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
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   andr    14 年前

    你可以用 level

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