所以我正在寻找解决以下查询:
SELECT * FROM `#__gdwproddise_category`
ORDER BY IF(`parent_id`, `parent_id`, `ordering`),
`parent_id`, `ordering` asc
所以重要的MYSQL字段是:
`multicat_id` = primary key
`parent_id`
`ordering`
父类别parent_id
为 = 0 其余为 =父类别multicat_id
每个唯一的parent_id
(包括=0,所以父母)在字段中都有唯一的排序集ordering
。
因此,在 ordering 字段中,您会发现多行的值为 1、2、3 等(每个值在每个内部都是唯一的parent_id
like parent_id=0 will only have 1 row with ordering set to 1.
and parent_id=1 will only have 1 row with ordering set to 1.
etc.
我想通过以下方式输出它们:
parent (ordering=1)
-child (ordering=1)
-child (ordering=2)
parent (ordering=2)
-child (ordering=1)
etc.
以下查询似乎几乎可以工作。然而,父母不是按那里的ordering
字段排序的。他们似乎是按主键排序的。
SELECT * FROM `#__gdwproddise_category`
ORDER BY IF(`parent_id`, `parent_id`, `multicat_id`),
`parent_id`, `ordering` asc
我在上面发布的第一个查询是我试图解决这个问题的推论,但这不起作用......第一个查询效果更好。至少父母和孩子在第一个中被分组在一起。这第二个联合国将父母与孩子分组。孩子们似乎粘在一起。
我的查询基于以下线程的答案之一中给出的示例: SQL 嵌套顺序?
我发现这篇文章: http: //mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
当我使用的查询几乎完全符合我的要求时,使用该文章中的“ltg rtg”解决方案似乎很复杂……那篇文章似乎支持无限子类别……我的系统只需要 1 级子类别.