按產品類別搜索時,我需要顯示其所有父類別。
當有多個級別時,它只顯示兩個結果。
CREATE TABLE `category` (
`id` int NOT NULL,
`parent_category_id` int,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB;
INSERT INTO `category` (`id`, `parent_category_id`, `name`) VALUES
(1, NULL, 'Male'),
(2, 1, 'T-shirts'),
(3, 1, 'Shoes'),
(4, 2, 'Tank top'),
(5, 2, 'Basic shirts');
SELECT CONCAT(t1.name, ' > ', t2.name) as breadcrumb
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent_category_id = t1.id
WHERE t2.id = 4; #( 4 or 5 )
結果: T 恤 > 背心
預期結果:男性 > T 恤 > 背心
不顯示“男性”類別
uj5u.com熱心網友回復:
好吧,您只加入一個級別。如果要加入任意級別,可以使用遞回 CTE。
WITH RECURSIVE
breadcrumbs
AS
(
SELECT 1 AS ordinality,
c.name,
c.subcategory_id
FROM category AS c
WHERE c.id = 4
UNION ALL
SELECT bc.ordinality 1 AS ordinality,
c.name,
c.subcategory_id
FROM breadcrumbs AS bc
INNER JOIN category AS c
ON c.id = bc.subcategory_id
)
SELECT group_concat(bc.name
ORDER BY bc.ordinality DESC
SEPARATOR ' > ') AS breadcrumb
FROM breadcrumbs AS bc;
資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385816.html
