我目前有一个托管所有用户的表。现在,一些用户team_leaders
引用了团队负责人的用户ID,该用户ID也存储在数据库中。
现在,我想做的事情(并且无法弄清楚)是如何查询数据库,它在一个结果集中检索所有团队成员和领导者的ID列表。
例如
name | id | team_leader
--------------------------------------------------
Jack | 1 | null
--------------------------------------------------
Susan| 2 | 1
--------------------------------------------------
Bob | 3 | 1
--------------------------------------------------
Eric | 4 | null
--------------------------------------------------
SELECT name FROM users where team_leader = '<some user's id>'
返回[ 'Susan', Bob']
但我希望它能归还包括的团队领导,例如
['Jack', 'Susan', 'Bob']
有没有人知道如何在查询结果中包含团队负责人?
编辑:
好吧,好像我没有100%解释自己,我的道歉。所以此查询的目标是执行以下操作。
我有另一个名为leads
的表,其中有一个名为user_id
的字段,它与有权访问潜在客户的用户相关联。现在,我想介绍团队领导者更新与其帐户相关联的潜在客户的能力,因此如果当前用户是团队负责人,他们应该能够将user_id
从他们的ID更新为任何人他们的团队,从他们的一个孩子到另一个孩子,从一个孩子到他们自己,但不是任何不在他们团队中的人。所以我想到它的方式是有一个WHERE EXISTS或WHERE IN(这意味着在一个名为leader_id
的潜在客户表中添加一个字段)并检查新的user_id是否在该团队负责人的列表中#39;成员,包括他们自己。
基于上面的例子。
UPDATE lead SET user_id = xxx
WHERE lead.id = yyy
AND ...
-- here is where I would check that the user_id xxx is part of the current
-- user's team which must be a team leader, for example user.id = 1
所以我的思考过程是先获取上一个查询然后检查。
希望这可以解决问题。
答案 0 :(得分:0)
如果我理解正确,您可以使用or
:
select name
from users
where team_leader = 1 or id = 1
答案 1 :(得分:0)
WITH CTE AS(
SELECT name,id,team_leader FROM [users]
WHERE team_leader=1
UNION ALL
SELECT u.name,u.id,u.team_leader from [users] u
JOIN CTE ON CTE.empno=u.team_leader`enter code here`
and u.team_leader=1
)
SELECT * FROM CTE