我的数据表中有以下结构



现在从上方数据说,如果我要查找给出组织ID的所有子组织,那么如何找到它。

当组织ID = 10707(主要组织)时,如何在此处显示转销商A,转销商B,广告商A,广告商B

我的表名称是organization_,并且有


  parentorganizationId


在描述该特定组织的上级组织的每一行中。

因此,当我给出主要组织的ID时,说10707,那么它应该返回具有该组织ID的所有子组织。

最佳答案

分层数据有各种模型。看来您在表中同时使用了“邻接表”和“路径枚举”。您可以在Bill Karwin的幻灯片中阅读有关它们的内容,该幻灯片讨论了MySQL中的各种模型和实现:Models for Hierarchical data with SQL

因此,使用treePath列,您需要的查询非常简单:

SELECT
    GROUP_CONCAT(t.name) AS SubOrganizations
FROM
    tableX AS t
  JOIN
    tableX AS p
      ON  t.treePath LIKE CONCAT( p.treePath, '%')
      AND t.organizationId <> p.organizationId
WHERE
    p.organizationId = 10707 ;

07-26 03:39