所以我有一个餐桌团队
team(id,name,parentId)。
我有如下表队:
id name parentId
1 root null
2 child1 1
3 child2 2
所以,我有teamId = 1 我可以在parentId的帮助下获得具有teamId 1的团队以及teamId 1的子团队。但是是否有可能获得child2,因为它的child1的子孩子是根的孩子,即teamId 1,仅包含teamId信息? 还是为了简化起见,是否需要像具有不同关系的Teams,Subteams和TeamSubteam那样以不同的方式创建表?
Team.find({
where: {
or: [{
id: teamId
}, {
parentId: teamId
}]
},
fields: ['id']
}, function (err, teams) { });
答案 0 :(得分:0)
这是一个简单的递归查询:
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;