我的数据表中有以下结构
现在从上方数据说,如果我要查找给出组织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 ;