Erstellen Sie beim Erstellen des verschachtelten Baummodells niemals Duplikate auf lft
und rgt
. Sie sollten sie sogar eindeutig deklarieren.
In Ihrem Datenmodell die Sets für die Kategorie 1
und 8
Überlappung. Sagen Sie 1
bis 14
werden beide für Artikel 1
verwendet und 8
.
Ersetzen Sie sie durch diese Werte:
INSERT INTO `categories` VALUES(1, NULL, NULL, 'Fruits', 1, 14);
INSERT INTO `categories` VALUES(2, 1, 1, 'Apple', 2, 3);
INSERT INTO `categories` VALUES(3, 1, 1, 'Orange', 4, 9);
INSERT INTO `categories` VALUES(4, 3, 1, 'Orange Type 1', 5, 6);
INSERT INTO `categories` VALUES(5, 3, 1, 'Orange Type 2', 7, 8);
INSERT INTO `categories` VALUES(6, 1, 1, 'Pear', 10, 11);
INSERT INTO `categories` VALUES(7, 1, 1, 'Banana', 12, 13);
INSERT INTO `categories` VALUES(8, NULL, NULL, 'Eletronics', 15, 29);
INSERT INTO `categories` VALUES(9, 8, 8, 'Cell Phones', 16, 17);
INSERT INTO `categories` VALUES(10, 8, 8, 'Computers', 19, 24);
INSERT INTO `categories` VALUES(11, 10, 8, 'PC', 20, 21);
INSERT INTO `categories` VALUES(12, 10, 8, 'MAC', 22, 23);
INSERT INTO `categories` VALUES(13, 8, 8, 'Printers', 25, 26);
INSERT INTO `categories` VALUES(14, 8, 8, 'Cameras', 27, 28);
Jetzt müssen Sie nicht mehr auf root_id
bestellen .
Kein einfacher Weg, es sei denn, Sie fügen die Knoten von Anfang an in der Reihenfolge der Namen ein. Geschwister mit dem größeren name
sollte ein größeres lft
haben und rgt
:
INSERT INTO `categories` VALUES(1, NULL, NULL, 'Fruits', 1, 14);
INSERT INTO `categories` VALUES(2, 1, 1, 'Apple', 2, 3);
INSERT INTO `categories` VALUES(7, 1, 1, 'Banana', 4, 5);
INSERT INTO `categories` VALUES(3, 1, 1, 'Orange', 6, 11);
INSERT INTO `categories` VALUES(4, 3, 1, 'Orange Type 1', 7, 8);
INSERT INTO `categories` VALUES(5, 3, 1, 'Orange Type 2', 9, 10);
INSERT INTO `categories` VALUES(6, 1, 1, 'Pear', 12, 13);
Ein verschachtelter Baum kann nur eine implizite Reihenfolge haben.
Es gibt auch eine Möglichkeit, Adjazenzlisten in MySQL
abzufragen :
, müssen Sie jedoch eine zusätzliche eindeutige Bestellspalte erstellen, wenn Sie etwas anderes als id
bestellen möchten .
Vielleicht möchten Sie auch diesen Artikel lesen:
die zeigt, wie verschachtelte Sätze effizienter gespeichert und abgefragt werden können.