【发布时间】:2019-11-18 00:37:15
【问题描述】:
我有不同的表格,目标是为每个客户获得批准工作流程
客户有不同的审批流程,看看这个:
在我的表“实体”中有这个
(12, 'Math Andrew', 308, 'CHAIN1-MathAndrew').
这意味着在创建行时,数字 12 被分配给 Math Andrew...308 是表示 Matt Andrew 是客户的数字
Table type_entities
(308,'CLIENT'),
(309,'APPROVER1'),
(310,'APPROVER2'),
(311,'APPROVER3'),
(312,'J3 APPROVER4'),
(313,'J4 APPROVER4'),
(314,'J5 APPROVER4'),
(315, 'J6 APPROVER4'),
(316,'J7 APPROVER4');
因为 Math Andrew 是客户(也称为客户),所以他必须与一个或多个批准者
相关联一个客户可能有 1 个审批者,或 2 个审批者或 3 个审批者或 4 个审批者,实体表中存在不同的审批者:
(18, 'ZATCH', 309, null),
(19, 'MAX', 309, null),
(20, 'Ger',310, null),
(21, 'Mar',310, null),
(22, 'Maxwell',311, null),
(23, 'Ryan',312, null),
(24, 'Juy',313, null),
(25, 'Angel',314, null),
(26, 'John',315, null);
实体之间的关系类型:
(444,'J6 CLIENT-APPROVER4'),
(445,'J3 CLIENT-APPROVER4'),
(446,'J4 CLIENT-APPROVER4'),
(447,'J10 CLIENT-APPROVER4'),
(448,'J4 CLIENT-APPROVER4'),
(449,'J5 CLIENT-APPROVER4'),
(450,'J10 CLIENT-APPROVER4'),
(451,'J3 CLIENT-APPROVER4'),
(452,'J8 CLIENT-APPROVER4'),
(453,'J5 CLIENT-APPROVER4'),
(454,'J6 CLIENT-APPROVER4'),
(455,'J7 CLIENT-APPROVER4'),
(456,'J7 CLIENT-APPROVER4'),
(457,'J8 CLIENT-APPROVER4'),
(458,'CLIENT-APPROVER3'),
(459,'CLIENT-APPROVER1'),
(460,'APPROVER1-APPROVER2'),
(461,'APPROVER1-APPROVER3'),
(462,'J3 APPROVER1-APPROVER4'),
(463,'APPROVER2-APPROVER3'),
(464,'J3 APPROVER3-APPROVER4'),
(465,'J4 APPROVER3-APPROVER4'),
(466,'J5 APPROVER3-APPROVER4'),
(467,'J6 APPROVER3-APPROVER4'),
(468,'J7 APPROVER3-APPROVER4'),
(469,'J8 APPROVER3-APPROVER4'),
(470,'J10 APPROVER3-APPROVER4'),
(471,'CLIENT-APPROVER2');
这是重要的部分:当客户链接到一个审批者时,会在 relationships 表中创建一个关系。
在这种情况下,MathAndrew 已链接到批准人 #18 (ZATCH),此行是在分配后创建的:
(787,459,'CHAIN1-MathAndrew',18)--
787 是创建该行时分配的编号 459
代表关系客户 - 批准人
CHAIN1-MathAndre 是
客户 18 是审批者
此外,在这种情况下,APPROVER1 已链接到 APPROVER2
(788,460,18,20)
然后,APPROVER2 链接到 APPROVER3
(789,463,20,21)
最后,APPROVER3 链接到了APPROVER4
(790,467,21,26)
我想获得完整的审批工作流程链,我的意思是: CHAIN1-MathAndrew-ZATCH-Ger-Mar-John
我这样做了,但我没有得到我想要的:
WITH relationships_CTE as
select description_entity_1,description_entitiy_2
from relationships
where description_entitiy_1 like 'CHAIN1-MathAndrew'
UNION ALL
select description_entity_1,description_entitiy_2
from relationships
where relationships.description_entitiy_2 = relationships_CTE.description_entitiy_2
select *
from relationships_CTE ma
left join relationships_CTE na
这是我的 SQL FIDDLE:
http://sqlfiddle.com/#!9/51bb39/4
你能帮帮我吗?
【问题讨论】:
标签: sql common-table-expression recursive-query chaining