mysql中的递归多对多关系

问题描述 投票:0回答:1

我正在开发一个用于管理公司销售业务的应用程序。 他们的业务是多层的,意味着销售人员A由另一个销售人员B管理,而销售人员B又由另一个销售人员管理等等......

我可以设计一个带有parent_id列的表并使用CTE来解决问题。 然而,客户希望跟踪他们之间关系的变化。 例如,从2020年1月1日到2020年12月31日,A人由B人管理,但从2021年1月1日到现在,他/她由C人管理...

因此,我必须将 id 和 Parent_id 之间的 1-n 关系更改为包含 child_id 和 Parent_id 的独立 n-n 表,并具有 2 个数据透视列 effective_date 和 expiry_date。如果关系仍然有效,Expiry_date 为 null。

我的问题是我不知道如何使用CTE来检索这种数据库的数据,例如,我如何在特定时刻找到销售人员的最高经理?

mysql recursion many-to-many relationship
1个回答
0
投票

如果A由B管理,B由C管理,所以我需要一个查询,当我输入A的id时,它返回C的id。

WITH RECURSIVE cte AS (
    SELECT * FROM table WHERE user_name = 'Person A'
    UNION ALL
    SELECT table.* FROM table JOIN cte ON table.user_id = cte.managed_by
)
SELECT * FROM cte WHERE managed_by IS NULL;
© www.soinside.com 2019 - 2024. All rights reserved.