我正在尝试为网站创建一个菜单系统,您可以在其中创建带有子菜单选项的菜单。 在我的 mysql 'menu_item' 表中,有一个 'hierarchy' 列,如果它是顶级菜单,则该列将保存 0,或者它位于菜单层次结构中的菜单项的 id。 现在,我想做的是提出一个 SQL 查询,该查询将返回一个数组,该数组已经以这样的方式处理了它的顺序:在每一行之后,它将布置所有行按等级制度划分的。 例如,如果我有这个菜单:
menu1 - menu1.1, menu1.2 menu2 - menu 2.1, menu 2.2 menu 3 - menu 3.1
结果应该是这样的:
menu 1 menu 1.1 menu 1.2 menu 2 menu 2.1
等等。
我无法全神贯注于如何去做。这是否可以在 MySQL 中完成,或者我是否必须返回整个菜单项列表并在 PHP 中对它们进行排序?
谢谢。
最佳答案
我假设您在 menu_item 表中有一个列,其中包含菜单项名称,例如“菜单 1”、“菜单 2”等。我将该列称为 menu_item_name
,因为您的问题中未指定它。
我认为解决这个问题的方法是如果层次结构为零,则在返回的列上附加任何内容,否则附加一个“。”和层次编号。此外,按您已经排序的内容(可能是 menu_item_name)排序,然后按层次结构排序。
SELECT
menu_item_name + CASE WHEN hierarchy <> 0 THEN '.' + hierarchy ELSE '' END
FROM
menu_item
ORDER BY
menu_item_name, hierarchy
尝试一下,让我知道它是否有效。
干杯,
Z
关于php - mysql 创建一个带有有序子菜单的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440832/