SQL: How to select all parent nodes in Materialized path?

穿精又带淫゛_ 提交于 2019-12-06 15:14:40

问题


The MySQL databse stores tree with the help of materialized path data structure. How to select all parents of the given node?

I use dot '.' as path separator, and database structure includes 'level' field that indicates the depth of a node in the tree.

Lets I have those tree and need all parents of the node 'a.b.d.e':

id | path
 a | a
 b |  a.b
 c |   a.b.c
 d |   a.b.d
 e |    a.b.d.e
 f |  a.f

The script should return:

a
a.b
a.b.d
a.d.d.e (optional)

How to do that in MySQL?


回答1:


I've found the solution in the question posted by @quambo. Here it is:

SELECT * FROM table
WHERE ? LIKE id||%
ORDER BY path

Insted of '?' it is necessary to place the path to the given node.

SELECT * FROM table
WHERE 'a.b.d.e' LIKE id||%
ORDER BY path


来源:https://stackoverflow.com/questions/41783113/sql-how-to-select-all-parent-nodes-in-materialized-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!