как получить все подкоманды из таблицы таблицы, которая также включает подкоманды команды? - PullRequest
1 голос
/ 05 мая 2020

ТАК У меня есть команда таблицы

команда (id, name, parentId).

У меня есть команда таблицы следующим образом:

id      name               parentId
 1      root                null
 2      child1              1
 3      child2              2

Итак, у меня есть teamId = 1 Я могу получить команду с teamId 1 вместе с подгруппами teamId 1 с помощью parentId. Но возможно ли получить child2, потому что это дочерний элемент child1, который является дочерним элементом root, т.е. teamId 1, с только информация о teamId? Или, чтобы упростить задачу, нужно ли создавать таблицу по-другому, как в Teams, Subteams и TeamSubteam, с отношением многие ко многим?

Team.find({
            where: {
                or: [{
                    id: teamId
                }, {
                    parentId: teamId
                }]
            },
            fields: ['id']
        }, function (err, teams) { });

1 Ответ

0 голосов
/ 05 мая 2020

Это простой рекурсивный запрос:

with recursive all_teams as ( 
  select *
  from team 
  where teamid = 1 -- or wherever you want to start
  union all
  select sub.*
  from team sub
   join all_teams p on p.id = sub.parentid
)
select *
from all_teams;
...