在嵌套数据集中选择父节点

时间:2011-01-06 14:46:44

标签: mysql data-structures

有下面的查询,这是好的和花花公子...

SELECT
    `node`.`site_pages_id` AS `page_id` ,
    GROUP_CONCAT(`parent`.`site_pages_id` SEPARATOR '/') AS `path` ,
    IFNULL( CONCAT( '/' , GROUP_CONCAT(`parent`.`url` SEPARATOR '/') ) , '/' ) AS `url`
FROM
    `site_pages` AS `node`
LEFT JOIN
    `site_pages` AS `parent`
ON
    `node`.`lft_limit` BETWEEN `parent`.`lft_limit` AND `parent`.`rgt_limit`
GROUP BY
    `node`.`site_pages_id`
ORDER BY
    `node`.`lft_limit` ASC

产生以下

1, 1,     /
2, 1/2,   /about-us
8, 1/2/8, /about-us/meet-the-team
3, 1/3,   /web
5, 1/5,   /print
6, 1/6,   /branding
7, 1/7,   /contact-us

一切都很好。

我想为每个节点选择直接父节点和直接父节点。

我在没有讨厌的子查询的情况下做出的微弱尝试失败了(TBO并没有那么好)。

非常感谢提示

1 个答案:

答案 0 :(得分:0)

没有probs Martin ......

page_id url            lft_limit   rgt_limit
1,      NULL,          1,          14,
2,      about-us,      2,          5,
3,      web,           6,          7,
5,      print,         8,          9,
6,      branding,      10,         11,
7,      contact-us,    12,         13,
8,      meet-the-team, 3,          4,