mysql创建一个子菜单命令的菜单

时间:2014-03-16 18:15:57

标签: php html mysql sql

我正在尝试为网站创建一个菜单系统,您可以使用子菜单选项创建菜单。 在我的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中订购它们?

感谢。

1 个答案:

答案 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

尝试一下,让我知道它是否有效。

干杯,

ž