Mysql 在一个表中订购类别和子类别
我有一个三列的分类表Mysql 在一个表中订购类别和子类别,mysql,sql,categories,Mysql,Sql,Categories,我有一个三列的分类表 categories: id, name, parent_id 如何使用SQL命令在树状图中打印这些类别 样本: Men Top Shirts Tshirts Bottom Jeans Women Top Jackets Tshirts Bottom Jeans Accessories
categories: id, name, parent_id
如何使用SQL命令在树状图中打印这些类别
样本:
Men
Top
Shirts
Tshirts
Bottom
Jeans
Women
Top
Jackets
Tshirts
Bottom
Jeans
Accessories
Belt
Cap
您可能需要使用递归来执行此操作,例如,类似于以下存储过程的内容
DELIMITER //
CREATE PROCEDURE PrintHierachy
(IN parentId DECIMAL(19, 0), IN indent VARCHAR(1000))
BEGIN
DECLARE itemName VARCHAR(255);
DECLARE childId DECIMAL(19, 0);
DECLARE csr CURSOR FOR
SELECT id
FROM MY_TABLE
WHERE parentId = parentId
ORDER BY NAME;
IF parentId > 0 THEN
SELECT itemName INTO FROM MY_TABLE WHERE id=parentId;
% Print it
SELECT concat(indent, itemName);
END IF;
OPEN csr;
child_loop: LOOP
FETCH csr INTO childId;
IF done THEN
LEAVE child_loop;
END IF;
% Recurse
CALL PrintHierachy(concat(' '), childId);
END LOOP;
CLOSE csr;
END;
这假定顶层的父ID为0
e、 g.调用PrintHierachy,0
我以前没有在MySQL中使用过存储过程,但在其他DBMS中使用过存储过程,所以请原谅我的错误 推荐阅读:,通常情况下,数据显示问题将在表示层中处理。^这将仅按字母顺序排列!如果你想让男人出现在女人和配饰的上方,你可能需要一张桌子或另一列来存储这个订单…我同意上面的评论,像这样的事情应该在展示层完成!!