Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE category ( id int(10) unsigned NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, parent_id int(10) unsigned DEFAULT NULL, PRIMARY KEY (id), FOREIGN KEY (parent_id) REFERENCES category (id) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE `items` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `cat_id` int unsigned DEFAULT NULL, `parent_id` int unsigned DEFAULT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`), KEY `cat_id` (`cat_id`), KEY `sub_id` (`parent_id`), CONSTRAINT `cat_id` FOREIGN KEY (`cat_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sub_id` FOREIGN KEY (`parent_id`) REFERENCES `category` (`parent_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; BEGIN; INSERT INTO `category` VALUES (1, 'Colazione', NULL); INSERT INTO `category` VALUES (2, 'Pranzo', NULL); INSERT INTO `category` VALUES (3, 'Primi piatti', 2); INSERT INTO `category` VALUES (4, 'Second dish', 2); INSERT INTO `category` VALUES (5, 'Other things for lunch', 2); COMMIT; -- ---------------------------- -- Records of items -- ---------------------------- BEGIN; INSERT INTO `items` VALUES (1, 1, NULL, 'Cornetto'); INSERT INTO `items` VALUES (2, 3, 2, 'Pasta al sugo 1'); INSERT INTO `items` VALUES (3, 3, 2, 'Pasta al sugo 2'); INSERT INTO `items` VALUES (4, 3, 2, 'Pasta al sugo 3'); INSERT INTO `items` VALUES (5, 3, 2, 'Pasta al sugo 1 X'); INSERT INTO `items` VALUES (6, 3, 2, 'Pasta al sugo 2 X'); INSERT INTO `items` VALUES (7, 4, 2, 'Pasta al sugo 3 X'); COMMIT; with combine_trees as ( with make_tree as ( WITH RECURSIVE category_path AS ( SELECT id, title, parent_id FROM category WHERE parent_id IS NULL UNION ALL SELECT c.id, c.title, c.parent_id FROM category_path AS cp JOIN category AS c ON cp.id = c.parent_id ) SELECT cp.title, cp.id, if(cp.id = category.id, json_arrayagg(json_object('item_name', it.name)), json_object(cp.title, json_object('items',json_arrayagg(json_array(json_object('item_name', it.name)))))) as tree FROM category_path cp join category on category.id = ifnull(cp.parent_id, cp.id)

Stuck with a problem? Got Error? Ask AI support!

Copy Clear