Какой самый простой способ сделать рекурсивное самосоединение в SQL Server? У меня есть такая таблица:
PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
5 YT NULL
6 IS 5
И я хочу иметь возможность получать записи, относящиеся только к иерархии, начинающейся с конкретного человека. Поэтому, если бы я запросил иерархию CJ по PersonID = 1, я бы получил:
PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
А для ЭБ я бы получил:
PersonID | Initials | ParentID
2 EB 1
4 SW 2
Я немного застрял в этом, не могу думать, как это сделать, кроме ответа с фиксированной глубиной, основанного на связке соединений. Это будет происходить так, как это происходит, потому что у нас не будет много уровней, но я бы хотел сделать это правильно.
Спасибо! Крис.