0

我的表中有以下结构和数据

在此处输入图像描述

现在从上面的数据中说,如果我想找到给定组织 ID 的所有子组织..那么如何找到它。

在这里我怎样才能让它显示经销商 A、经销商 B、广告商 A、广告商 B,当组织 ID = 10707(主要组织)

我的表名是 organization_ 并且有

父组织 ID

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

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

4

2 回答 2

2

分层数据有多种模型。看来您在表中同时使用了“邻接列表”和“路径枚举”。您可以在 Bill Karwin 的幻灯片中了解它们,该幻灯片讨论了 MySQL 中的各种模型和实现:使用 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 ;
于 2013-01-07T09:46:14.157 回答
0

简而言之,与其他 RDMBS(SQL Server、Oracle)不同,MySql 不支持递归查询。

来自该网站的几个关于该主题的有用链接:

于 2013-01-07T07:10:32.590 回答