Khi xây dựng mô hình cây lồng nhau, không bao giờ tạo bản sao trên lft
và rgt
. Trên thực tế, bạn nên khai báo chúng là duy nhất.
Trong mô hình dữ liệu của bạn, các bộ cho danh mục 1
và 8
chồng lên nhau. Nói, 1
thành 14
đều được sử dụng cho các mục 1
và 8
.
Thay thế chúng bằng các giá trị sau:
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);
Bây giờ bạn không cần phải đặt hàng trên root_id
.
Không có cách nào dễ dàng, trừ khi bạn chèn các nút theo thứ tự tên ngay từ đầu. Anh chị em có name
lớn hơn nên có lft
lớn hơn và 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);
Một cây lồng nhau chỉ có thể có một thứ tự ngầm định.
Ngoài ra còn có một cách để truy vấn danh sách kề trong MySQL
:
tuy nhiên, bạn sẽ phải tạo thêm một cột đặt hàng duy nhất nếu bạn muốn đặt hàng trên bất kỳ thứ gì khác ngoài id
.
Bạn cũng có thể muốn đọc bài viết này:
cho biết cách lưu trữ và truy vấn các tập hợp lồng nhau hiệu quả hơn.