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