add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE categories (id int, cat_name varchar(100),parent_category_id int DEFAULT NULL);
INSERT INTO categories VALUES
(1, 'Mens', NULL)
,(2, 'Tops', 1)
,(3, 'Jerseys', 2)
,(4, 'England-1', 3)
,(5, 'England-2', 3)
;
select * from categories;
Records: 5  Duplicates: 0  Warnings: 0
id cat_name parent_category_id
1 Mens null
2 Tops 1
3 Jerseys 2
4 England-1 3
5 England-2 3
WITH RECURSIVE category_tree AS (
SELECT 0 as lvl, id, cat_name, parent_category_id,
cat_name AS full_name
FROM categories
WHERE parent_category_id IS NULL
UNION ALL
SELECT lvl+1 as lvl,c.id, c.cat_name,c.parent_category_id,
CONCAT (ct.full_name, ' > ', c.cat_name)
FROM category_tree ct
INNER JOIN categories c
ON c.parent_category_id = ct.id
)
SELECT * -- id, full_name
FROM category_tree;
lvl id cat_name parent_category_id full_name
0 1 Mens null Mens
1 2 Tops 1 Mens > Tops
2 3 Jerseys 2 Mens > Tops > Jerseys
3 4 England-1 3 Mens > Tops > Jerseys > England-1
3 5 England-2 3 Mens > Tops > Jerseys > England-2
WITH RECURSIVE category_tree AS (
SELECT 0 as lvl, id, cat_name, parent_category_id,
cat_name AS full_name
FROM categories
WHERE parent_category_id IS NULL
UNION ALL
SELECT lvl+1 as lvl,c.id, c.cat_name,c.parent_category_id,
CONCAT (ct.full_name, ' > ', c.cat_name)
FROM category_tree ct
INNER JOIN categories c
ON c.parent_category_id = ct.id
where lvl<0
)
SELECT * -- id, full_name
FROM category_tree;
lvl id cat_name parent_category_id full_name
0 1 Mens null Mens
WITH RECURSIVE category_tree AS (
SELECT 0 as lvl, id, cat_name, parent_category_id,
cat_name AS full_name
FROM categories
WHERE parent_category_id IS NULL
UNION ALL
SELECT lvl+1 as lvl,c.id, c.cat_name,c.parent_category_id,
CONCAT (ct.full_name, ' > ', c.cat_name)
FROM category_tree ct
INNER JOIN categories c
ON c.parent_category_id = ct.id
where lvl<1
)
SELECT * -- id, full_name
FROM category_tree;
lvl id cat_name parent_category_id full_name
0 1 Mens null Mens
1 2 Tops 1 Mens > Tops
WITH RECURSIVE category_tree AS (
SELECT 0 as lvl, id, cat_name, parent_category_id,
cat_name AS full_name
FROM categories
WHERE parent_category_id IS NULL
UNION ALL
SELECT lvl+1 as lvl,c.id, c.cat_name,c.parent_category_id,
CONCAT (ct.full_name, ' > ', c.cat_name)
FROM category_tree ct
INNER JOIN categories c
ON c.parent_category_id = ct.id
where lvl<2
)
SELECT * -- id, full_name
FROM category_tree;
lvl id cat_name parent_category_id full_name
0 1 Mens null Mens
1 2 Tops 1 Mens > Tops
2 3 Jerseys 2 Mens > Tops > Jerseys
WITH RECURSIVE category_tree AS (
SELECT 0 as lvl, id, cat_name, parent_category_id,
cat_name AS full_name
FROM categories
WHERE parent_category_id IS NULL
UNION ALL
SELECT lvl+1 as lvl,c.id, c.cat_name,c.parent_category_id,
CONCAT (ct.full_name, ' > ', c.cat_name)
FROM category_tree ct
INNER JOIN categories c
ON c.parent_category_id = ct.id
-- where lvl<3
)
SELECT * -- id, full_name
FROM category_tree;
lvl id cat_name parent_category_id full_name
0 1 Mens null Mens
1 2 Tops 1 Mens > Tops
2 3 Jerseys 2 Mens > Tops > Jerseys
3 4 England-1 3 Mens > Tops > Jerseys > England-1
3 5 England-2 3 Mens > Tops > Jerseys > England-2