Каков самый простой способ выполнить рекурсивное самосоединение в 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
А для EB я бы получил:
PersonID | Initials | ParentID
2 EB 1
4 SW 2
Я немного застрял в этом, не могу придумать, как это сделать, кроме ответа с фиксированной глубиной, основанного на кучке объединений. Так получится, потому что у нас не будет много уровней, но я хотел бы сделать это как следует.
Спасибо! Крис.