MySQL类别树

时间:2018-11-26 17:32:11

标签: mysql sql

我有这个MySQL表格,我正在尝试获取主类别的ID,与之链接的每个子类别以及与之链接的其他子类别...您可以在下面看到一个示例:

+----------------------+
| Catrgorias           |
+----------------------+
| id (int 11)          |
+----------------------+
| nombre (varchar 255) |
+----------------------+
| parent (int 11)      |
+----------------------+
+----+------------+--------+
| id | nombre     | parent |
+----+------------+--------+
| 1  | Cat1       | NULL   |
+----+------------+--------+
| 2  | Cat2.      | NULL   |
+----+------------+--------+
| 3  | SubCat1    | 1      |
+----+------------+--------+
| 4  | SubCat2    | 2      |
+----+------------+--------+
| 5  | SubSubCat1 | 3      |
+----+------------+--------+

有人知道如何在MySQL中获取这些ID并通过类似的方式获得此结果吗?

对于categort_tree(1)

+----+     +-------+
| id |     | id    |
+----+  or +-------+
| 1  |     | 1,3,5 |
+----+     +-------+
| 3  |
+----+
| 5  |
+----+

对于categort_tree(2)

+----+     +-----+
| id |     | id  |
+----+  or +-----+
| 2  |     | 2,4 |
+----+     +-----+
| 4  |
+----+

1 个答案:

答案 0 :(得分:0)

您可以使用递归CTE来实现

with cte as
(
   SELECT ID
   FROM CATEGORY 
   WHERE ID = %input

   UNION ALL

   SELECT ID
   FROM CATEGORY 
   JOIN CTE ON PARENT = CTE.ID
)
SELECT * FROM CTE