我正在尝试为网站创建一个菜单系统,您可以使用子菜单选项创建菜单。 在我的mysql'menu_item'表中,有一个'hierarchy'列,如果它是topl-evel菜单,它将保持0,或者它位于菜单层次结构中的菜单项的id。 现在,我正在尝试做的是提出一个SQL查询,它将返回一个数组,该数组已经按照这样的顺序处理,在每行之后,它将布置所有行heirarchichly在它之下。 例如,如果我有这个菜单:
menu1 - menu1.1,menu1.2 menu2 - menu 2.1,menu 2.2 menu 3 - menu 3.1
结果应该是这样的:
菜单1菜单1.1菜单1.2菜单2菜单2.1
等等。
我无法理解如何去做。这甚至可以在MySQL中完成,还是我只需要返回整个菜单项列表并在PHP中订购它们?
感谢。
答案 0 :(得分:0)
我假设你在menu_item表中有一个列,其中包含菜单项名称,例如“menu 1”,“menu 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
尝试一下,让我知道它是否有效。
干杯,
ž