【问题标题】:MySQL Nested Sets adding node above selected nodeMySQL嵌套集在选定节点上方添加节点
【发布时间】:2013-10-04 01:22:07
【问题描述】:

我一直在尝试解决这个问题,我有一个 MySQL 查询来将一个节点添加到列表中,例如:

这里

-帕肯

-舍恩

女士们

我想在男性之前添加“儿童”。在这种情况下,有人会说:在男性之前添加孩子。

这是在 Male 之后添加 Children 的查询。

锁定表categories写入;

SELECT @myRight := rght FROM categories WHERE name = '男性';

更新categories SET rght = rght + 2 其中rght > @myRight; 更新categories SET lft = lft + 2 其中lft > @myRight;

插入categories(name, lft, rght) 值('儿童', @myRight + 1, @myRight + 2);

解锁表格;

所以,从:http://cl.ly/image/1U3O2k1F2I1T 到:http://cl.ly/image/1D0k1Z1D2c18

谢谢:)

【问题讨论】:

    标签: mysql sql nested-sets


    【解决方案1】:

    想通了:

    LOCK TABLE `categories` WRITE;
    
    SELECT @myLeft := `lft` FROM `categories`
    WHERE `id` = '. $where .';
    
    UPDATE `categories` SET `rght` = `rght` + 2 WHERE `rght` > @myLeft;
    UPDATE `categories` SET `lft` = `lft` + 2 WHERE `lft` > @myLeft OR `lft` = @myLeft;
    
    INSERT INTO `categories`(`name`, `lft`, `rght`) VALUES("'. $name .'", @myLeft, @myLeft + 1);
    
    UNLOCK TABLES;
    

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多