Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo chế độ xem dạng cây từ tập kết quả này dựa trên Thuật toán duyệt cây?

Khi xây dựng mô hình cây lồng nhau, không bao giờ tạo bản sao trên lftrgt . 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 18 chồng lên nhau. Nói, 1 thành 14 đều được sử dụng cho các mục 18 .

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tắt kiểm tra khóa ngoại trong MySQL

  2. Đếm các hàng khác trong bảng có cùng giá trị

  3. Cú pháp TẠO CHỨC NĂNG trong MySQL

  4. Sự khác biệt giữa =null và IS NULL là gì?

  5. Làm cách nào để lưu trữ ngày UTC ISO8601 trong cơ sở dữ liệu MySQL?