我的产品和类别表中有条目id和parent。
让我说我有以下
0 ----- 0 ------ home
1 ----- 4 ------ PD1
2 ----- 0 ------ CAT1
3 ----- 2 ------ PD2
4 ----- 2 ------ CAT2
第一个col是id,第二个是父母,最后是头衔。
是否有一种方法(使用ORDER或其他方法)按以下顺序返回结果?
0 ----- 0 ------ home
2 ----- 0 ------ CAT1
3 ----- 2 ------ PD2
4 ----- 2 ------ CAT2
1 ----- 4 ------ PD1
答案 0 :(得分:1)
试试这个:
SELECT id, parent, title
FROM yourtable
ORDER BY parent, id
答案 1 :(得分:0)
试试这个
SELECT * FROM yourtablename ORDER BY parentfieldname
答案 2 :(得分:0)
可能就像
一样简单ORDER BY ParentID, ID
答案 3 :(得分:0)
首先,如果您想以自定义方式订购(不在命名字段上使用PK或字母),则需要添加一个字段来定义各种对象的排序权重。我会在表中添加一个名为ordering_weight的字段 - 你不想使用字段名称顺序或序列b / c它们是保留的SQL字。
其次,你需要一个order by子句:
ORDER BY top_level.ordering_weight, next_level.ordering_weight, ..., deepest_level.ordering_weight请注意,我的order by子句首先按树的最高级别命令,最后是树的最低或最深级别。 p>
当然,如果您正在寻找一个动态的递归级别,请忽略上述内容。
通常,当我看到这样的父母子女关系时,我看到人们想要做超过1级的递归。您的架构的问题在于它不支持动态递归级别。您只能获取顶级父级的子级,每个额外级别都需要另一个级别(有一些聪明的方法可以通过它,但是每个级别仍然需要额外的SQL)。
我认为对您更有用的是查看 嵌套集模型 ,它允许查询无限级别的递归。 见:http://en.wikipedia.org/wiki/Nested_set_model
例如,使用标准连接时,以下父子关系树非常困难,但使用嵌套集等模型非常容易。
Category A - Category B - - Category D - Category E Category F - Category G - - Category H - - - Category I - - - - Category J