categoryId parentId name lft rgt level ------------------------------------------------------------------------------------------------------------------- 08adf337-a577-4038-86a6-a5cd16676dff 0 ELECTRONICS 1 20 0 20150966-bbc5-438f-b3eb-1ff0bbc71b8b 08adf337-a577-4038-86a6-a5cd16676dff TELEVISIONS 2 9 1 3fb68583-b9f3-4996-86fa-897c825767e4 20150966-bbc5-438f-b3eb-1ff0bbc71b8b TUBE 3 4 2 bca4d77f-9f6f-41da-ad66-e747edcb9482 20150966-bbc5-438f-b3eb-1ff0bbc71b8b LCD 5 6 2 9726c8ff-7664-4494-bb2f-3b365e7a6743 20150966-bbc5-438f-b3eb-1ff0bbc71b8b PLASMA 7 8 2 576a2266-9f11-4430-b81f-2ac2a536ad9a 08adf337-a577-4038-86a6-a5cd16676dff PORTABLE ELECTRONICS 10 19 1 062921a4-e9af-48f6-adba-d623ca2de4ae 576a2266-9f11-4430-b81f-2ac2a536ad9a MP3 PLAYERS 11 14 2 3a80ae89-5eba-4407-819c-944e1d360ed9 062921a4-e9af-48f6-adba-d623ca2de4ae FLASH 12 13 3 0a03f267-8646-4460-bce7-dc6993e337a3 576a2266-9f11-4430-b81f-2ac2a536ad9a CD PLAYERS 15 16 2 fc9a25d0-a67a-4753-aed8-c148c9c95573 576a2266-9f11-4430-b81f-2ac2a536ad9a 2 WAY RADIOS 17 18 2 [/code] Я включил полный вывод кода sql ниже, если вам нужно добавить его в вашу базу данных. Вот полный код sql. : [code]------------------------ MySQL categories.sql ------------------------
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `categories`; CREATE TABLE `categories` ( `categoryId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `parentId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `lft` int NOT NULL, `rgt` int NOT NULL, `level` int NULL DEFAULT NULL, PRIMARY KEY (`categoryId`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `categories` VALUES ('062921a4-e9af-48f6-adba-d623ca2de4ae', '576a2266-9f11-4430-b81f-2ac2a536ad9a', 'MP3 PLAYERS', 11, 14, 2); INSERT INTO `categories` VALUES ('08adf337-a577-4038-86a6-a5cd16676dff', '0', 'ELECTRONICS', 1, 20, 0); INSERT INTO `categories` VALUES ('0a03f267-8646-4460-bce7-dc6993e337a3', '576a2266-9f11-4430-b81f-2ac2a536ad9a', 'CD PLAYERS', 15, 16, 2); INSERT INTO `categories` VALUES ('20150966-bbc5-438f-b3eb-1ff0bbc71b8b', '08adf337-a577-4038-86a6-a5cd16676dff', 'TELEVISIONS', 2, 9, 1); INSERT INTO `categories` VALUES ('3a80ae89-5eba-4407-819c-944e1d360ed9', '062921a4-e9af-48f6-adba-d623ca2de4ae', 'FLASH', 12, 13, 3); INSERT INTO `categories` VALUES ('3fb68583-b9f3-4996-86fa-897c825767e4', '20150966-bbc5-438f-b3eb-1ff0bbc71b8b', 'TUBE', 3, 4, 2); INSERT INTO `categories` VALUES ('576a2266-9f11-4430-b81f-2ac2a536ad9a', '08adf337-a577-4038-86a6-a5cd16676dff', 'PORTABLE ELECTRONICS', 10, 19, 1); INSERT INTO `categories` VALUES ('9726c8ff-7664-4494-bb2f-3b365e7a6743', '20150966-bbc5-438f-b3eb-1ff0bbc71b8b', 'PLASMA', 7, 8, 2); INSERT INTO `categories` VALUES ('bca4d77f-9f6f-41da-ad66-e747edcb9482', '20150966-bbc5-438f-b3eb-1ff0bbc71b8b', 'LCD', 5, 6, 2); INSERT INTO `categories` VALUES ('fc9a25d0-a67a-4753-aed8-c148c9c95573', '576a2266-9f11-4430-b81f-2ac2a536ad9a', '2 WAY RADIOS', 17, 18, 2); [/code] После запуска кода sql вам может потребоваться получить все дерево категорий: Код sql, который извлекает все дерево. [code]SELECT c.name, c.parentId, c.lft, c.rgt, c.level FROM categories c WHERE c.lft BETWEEN c.lft AND c.rgt GROUP BY c.name ORDER BY c.lft; [/code] Пример вывода кода выше: [code]+-----------------------+ | name | +-----------------------+ | ELECTRONICS | | TELEVISIONS | | TUBE | | LCD | | PLASMA | | PORTABLE ELECTRONICS | | MP3 PLAYERS | | FLASH | | CD PLAYERS | | 2 WAY RADIOS | +-----------------------+ [/code] Ссылка: https://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/