1

この記事http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/に出くわしましたが、「新しいノードの追加」の部分がわかりませんでした。

新しいノードを追加するためにこれを行うことができると言われています:

SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';

UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2);
  1. 実行時に、兄弟ではなく親がわかります。
  2. ノードに兄弟がまったくない場合、どうすれば追加できますか?
  3. 新しいルート ノードを追加するにはどうすればよいですか?
4

1 に答える 1

0

兄弟は関係ありません。そのparent_idを取得するだけで、新しいノードを追加できます。次のように機能します。ノードを親の最も左の子として追加し、ノードの位置が新しいノード (ツリーのすべてのノード) の右側になるようにノードの lft と rgt を更新します。ツリーのすべてのノードが現在更新されています。

新しいルート ノードを追加するには、parent_id を NULL に設定する必要があります。

それがあなたにとって役立つことを願っています。

于 2013-05-08T06:46:12.053 に答える