从树状结构返回父id



我正在尝试获取与父级相关的所有子级ID(多级)。我认为使用递归可以做到这一点,在尝试查询后,它没有返回预期的结果,我甚至不确定这是解决这个问题的写作方式,也不确定我哪里出了问题。

预期结果是返回指定位置的所有市县。

例如,如果我通过了英格兰的id(id=1),我想返回与之相关的所有id。它可以是4-5级的关联

例如

Id      Location
-----  ---------------
1      England
3      London            (as its associated with England)         
5      Ealing            (as associated with London)
6      Westminster       (as associated with London)
7      Camden            (as associated with London)
8      Barnet            (as associated with London)

。.

SQL Fiddle示例

有人能告诉我如何解决这个问题的正确方向吗。这是解决这个问题的正确方法吗?

谢谢。

您正朝着正确的方向前进。

想想我取得的成果:

;WITH locationFamily AS
(
    SELECT   id
            ,location_name 
            ,parent_id
            ,0 as level
    FROM location
    WHERE parent_id IS NULL
    and id = 1
    UNION ALL 
    SELECT   ls.id
            ,ls.location_name 
            ,ls.parent_id
            ,level + 1
    FROM location   ls
    INNER JOIN locationFamily  lf ON ls.parent_id= lf.id
)
SELECT *
FROM locationFamily 

将id条件移动到CTE中的第一个select,更改id连接的别名。

本教程提供了在sql中存储分层数据的良好概述。

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

最初来自这个问题:如何在mySQL表

中表示树结构

相关内容

  • 没有找到相关文章

最新更新