SQL: Как получить всех потомков для определенного родителя?
Имеется такая таблица:
USERS
| id | name | parent_id |
|---|---|---|
| 1 | John | null |
| 2 | Bob | 1 |
| 3 | Mark | 1 |
| 4 | Sean | 2 |
| 5 | Leon | 3 |
| 6 | Fred | 4 |
| 7 | Irma | 5 |
| 8 | Lisa | 5 |
Подскажите пожалуйста, как мне сделать выборку пользователя Mark и всех его потомков, включая потомков его потомков, чтобы в результате мне вернулся список пользователей с идентификаторами: 3, 5, 7, 8?
Ответы (1 шт):
Автор решения: Alexander Pavlov
→ Ссылка
with recursive hierarchy(id, name, parent_id) as (
select * from users where id=3 -- Mark
union all
select users.* from users,hierarchy where users.parent_id = hierarchy.id
)
select * from hierarchy