The idea is, how to implement a hierarchical query in MySQL (using the ancestry chains version) for a single row, such that it picks up the parents (if any) and any children (if any).
We need to combine two queries here:
Here's the query to to this (no functions required):
Click to see more details. Thanks to Quassnoi to made my day easy!!
We need to combine two queries here:
- Original hierarchical query that returns all descendants of a given
id
(a descendancy chain) - A query that would return all ancestors of a given
id
(an ancestry chain)
id
can have only one parent
, that's why we can employ a linked list technique to build an ancestry chain, like shown in this article:Here's the query to to this (no functions required):
SELECT CONCAT(REPEAT(' ', level - 1), _id) AS treeitem, parent, level FROM ( SELECT @r AS _id, ( SELECT @r := parent FROM t_hierarchy WHERE id = _id ) AS parent, @l := @l + 1 AS level FROM ( SELECT @r := 1218, @l := 0, @cl := 0 ) vars, t_hierarchy h WHERE @r <> 0 ORDER BY level DESC ) qi
Click to see more details. Thanks to Quassnoi to made my day easy!!
No comments:
Post a Comment