您所描述的父/子关系被称为Adjacency List Model
在 MySQL 中难以遍历的关系(其他 RDBMS 可以使用 处理此问题Recursive Common Table Expressions
)。
如果您知道父/子关系的潜在数量,您可以使用OUTER JOINs
它来为每个潜在关系(祖父母、父母、孩子等)加入表格。这是一个最多 3 个级别的示例:
select
cc.id idchild,
ccparent.id idparent,
ccgrandparent.id idgrandparent
from con_categoria cc
left join con_categoria ccparent on cc.fk_cat = ccparent.id
left join con_categoria ccgrandparent on ccparent.fk_cat = ccgrandparent.id
where cc.fk_cat = 378
如果您不知道潜在孩子的最大数量,那么您需要考虑Dynamic Sql
在函数或过程中使用。搜索 SO,您应该会看到一些示例。
作为建议,如果可以选择,请考虑使用Nested Set Model
. 查询分层数据要容易得多。这是一篇关于该主题的好文章以及与以下内容的比较Adjacency List Model
:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/