我有下表所示的表
| Employee ID | Manager ID |
|:-----------:|:----------:|
| E068 | E067 |
| E071 | E067 |
| E229 | E069 |
| E248 | E144 |
| E226 | E223 |
| E236 | E241 |
| E066 | E001 |
| E067 | E001 |
| E144 | E001 |
| E223 | E001 |
| E001 | Null |
| E241 | Null |
我们有包含“领导者ID”的表
| Leader ID |
|-----------|
| E001 |
| E241 |
问题陈述:
此问题是通过使用Employee及其Manager数据来确定Manager的负责人。
关于:我们有一个员工ID和他们的经理ID。请注意,经理ID来自员工ID。由于每位经理都有一个高于其级别的经理。
首先,我们将在Manager ID列中获取所有UNIQUE ID。然后,对于Manager ID列中的每个ID,我们将查找其各自的Manager
ID(Manager),然后将创建一个新列名称 Leader ,其中将包含Manager的所有层次结构。
要求的输出:
| Employee ID | Manager ID | Leader ID |
|-------------|-------------|-----------|
| E068 | E067 | E001 |
| E071 | E067 | E001 |
| E229 | E069 | E001 |
| E248 | E144 | E001 |
| E226 | E223 | E001 |
| E236 | E241 | E241 |
| E066 | E001 | E001 |
| E067 | E001 | E001 |
| E144 | E001 | E001 |
| E223 | E001 | E001 |
雇员ID列包含UNIQUE ID,而经理ID列包含DUPLICATES ID。
这是WITH RECURSIVE的典型示例
使用RECURSIVE,WITH查询可以引用其自身的输出。
试试这个:
with recursive subordinates as
(select
employeid,
e.managerid,
e.managerid as leader
from employes e
where e.managerid in(select * from leaders) -- non recursive term
union
select
e.employeid,
e.managerid,
a.managerid as leader
from employes e
join subordinates a on a.employeid = e.managerid -- recursive term
) select * from subordinates
如文档中所述:
一个 WITH RECURSCIVE 总是由组成
当先前的迭代没有输出时,终止将终止。
我正在创建一个递归导航迷宫的程序。代码: 然而,每当我到达死胡同时,它都不会回溯。当我调试时,它表明当程序从递归或“回溯”返回时,我的起始值专注于停留在我的死胡同空间。 例如: 9是我的出发点。2是我的退出。4是我的道路。1 表示墙壁。当我到达一个死胡同时(在本例中为第 7 行,第 2 列)。我的立场是等于整个程序其余部分的死胡同空间。这是为什么呢?
我不得不使用全局变量found来指示在哪里找到了一个和。返回语句始终未定义。 此外,如果在下面的if语句中使用return语句,代码将无法正常工作。 这不是问题的最佳解决方案,但这是我得到的工作版本。 返回语句之间的****,删除时代码工作,否则我要么得到false或未定义。我不明白这部分!为什么删除返回就能解决问题,我认为每个递归调用都必须用返回语句进行。 问题可能是由于多次呼叫造成的吗?我是不
问题内容: def foo(a): a.append(1) if len(a) > 10: print a return a else: foo(a) 为什么此递归函数返回None(请参见下面的脚本)?我不太明白我在做什么错。 问题答案: 您不会在该子句中返回任何内容:
问题内容: 我想从已更新的行中获取列的OLD值-无需使用触发器(也无需使用存储过程,也无需使用任何其他额外的非-SQL / -query实体)。 我有这样的查询: 如果我可以在子查询的末尾做这件事,那真是太了不起了(并解决了我的其他问题/问题)。但这是行不通的:不能将其与GROUP BY(这对于计算计数是必需的)结合使用。然后,我可以采用那些的值,并先执行查询以获取(即将被)以前的processi
我试图在Java中创建一个方法,它打印fib序列,直到传递给该方法的数字。我的问题是,我需要使用int返回类型来返回序列,而我不能使用递归。
我试图递归返回单链表的子列表。 例:列表=3- sub(list,1,2)应返回4- 参数1-开始索引 参数2-子列表的长度 我有点麻烦,因为我的代码只返回子列表的最后一个元素,而不是整个子列表。