我可以只用一个查询输出这个类别表(id和parent_id)吗?

时间:2012-01-25 01:23:10

标签: php mysql

我有一张表格如下:

enter image description here

我想要做的是输出主要类别(具有null category_id的类别),并在每个类别下列出具有该category_id作为父类别的类别。这样,我创建了一个小的层次结构输出。

我可以通过执行查询来捕获具有null父级的所有类别来完成此操作。然后执行另一个查询,查找以其为父类的类别。但是,我相信只有一个查询就可以在PHP / MySQL中实现这一目的。

任何帮助,即使在概念上,也会非常感激!

2 个答案:

答案 0 :(得分:1)

您可以从数据库中一次获取所有类别,并使用递归函数构建层次结构,请参阅:Convert a series of parent-child relationships into a hierarchical tree?

答案 1 :(得分:1)

SELECT COALESCE( c2.category_order, c1.category_order ) as top_order,
             c1.*
FROM categories c1
LEFT JOIN categories c2
ON c1.parent_category_id = c2.category_id
ORDER BY top_order, c1.category_order