我的表中有以下结构和数据
现在从上面的数据中说,如果我想找到给定组织 ID 的所有子组织..那么如何找到它。
在这里我怎样才能让它显示经销商 A、经销商 B、广告商 A、广告商 B,当组织 ID = 10707(主要组织)
我的表名是 organization_ 并且有
父组织 ID
在描述该特定组织的父组织的每一行中。
因此,当我给主要组织的 ID 说 10707 时,它应该返回我所有具有该组织 ID 的子组织..
分层数据有多种模型。看来您在表中同时使用了“邻接列表”和“路径枚举”。您可以在 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 ;