1

假设我在表中有以下结构:

+-------------+----------------+-----------+
| category_id | name           | parent_id |
+-------------+----------------+-----------+
|           1 | foo            |         0 |
|           2 | bar            |         0 |
|           3 | baz            |         1 |
|           4 | test           |         2 |
|           5 | test1          |         3 |
|           6 | test2          |         5 |
+-------------+----------------+-----------+

有没有人有任何指针来实现以下输出:

foo
bar
foo > baz
bar > test
baz > test1
baz > test 1 > test2

如果有帮助,我愿意更改我的架构,但不确定这是否是存储数据的最佳方法?

谢谢

4

3 回答 3

2

您可以尝试按父级排序,然后按名称排序:

SELECT * FROM category ORDER BY parent_id, name

这将根据其级别(父级)返回按名称排序的所有类别。

于 2012-04-20T20:02:00.190 回答
1

嵌套集模型的实现比简单的父子关系要复杂一些,但它有助于解决此类问题。

于 2012-04-20T20:04:26.043 回答
1

也许你想看看嵌套集

于 2012-04-20T20:06:57.560 回答