Получить вложенные дочерние элементы из идентификатора родителя с SQL Server - PullRequest
0 голосов
/ 10 февраля 2020

Моя таблица выглядит следующим образом:

ID      Name     Parent ID
1       Joe         -
2       James       -
3       Mike        1
4       Lewis       3
5       Anne        2
6       Lucy        4

Я хотел бы получить идентификатор родителя и всех его потомков. Например, если я сделаю:

Select Name from Table where ID = 1 (and nested children) 

Желаемый результат будет:

Joe
Mike
Lewis
Lucy

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Вы можете использовать рекурсивный CTE:

with cte as (
      select name, id
      from t
      where id = 1
      union all
      select t.name, t.id
      from cte join
           t
           on t.parent_id = cte.id
    )
select name
from cte;
0 голосов
/ 11 февраля 2020
    WITH CTE_Table AS (
      SELECT        ID, Name, Parent
      FROM            MyTable
      UNION ALL
      SELECT        MyTable.ID, MyTable.Name, MyTable.Parent
      FROM            CTE_Table INNER JOIN
                               MyTable ON CTE_Table.ID = MyTable.Parent
    )

SELECT        Name
FROM            CTE_Table
WHERE        (Parent = 1)
...