带有错误的sql数据库的3级菜单

时间:2015-03-10 14:05:09

标签: mysql

我必须根据数据库项目制作一个垂直的3级菜单,但不幸的是没有用" parent_id" ...

组织

db看起来像:

 menu    |  sub menu  |  subsub menu  |  subsubsub menu
________________________________________________________
univers1 |   galaxy1  |    planet1    |  city1

univers1 |   galaxy1  |    planet1    |  city2

univers1 |   galaxy2  |    planet1    |  city1

univers1 |   galaxy2  |    planet2    |  city1

univers1 |   galaxy2  |    planet2    |  city2

univers2 |   galaxy1  |    planet1    |  city1

univers2 |   galaxy2  |               |  

univers2 |   galaxy3  |    planet1    |  

我需要获得:

  • univers1
    • galaxy1
      • planet1
        • city1
        • 城2
      • planet2
        • city1
    • galaxy2
      • planet1
        • city1
      • planet2
        • city1
        • 城2
  • univers2
    • galaxy1
      • planet1
        • city1
    • galaxy2
    • galaxy3
      • planet1

我知道这很糟糕,但我别无选择。

我应该承认,如果没有传统的parent_id专栏,我很困惑。

mysql是否有一个特殊的技巧来保持请求简单? 我的意思是不使用间隔树。

1 个答案:

答案 0 :(得分:0)

您是否可以使用链接表?它不需要将parent_id作为参数发送。最重要的是,它将创建一个清晰简单的4个表结构,这是正确的形式,不会重复数据。

例如:

TABLE UNIVERSE
ID UniverseName UniverseStatus ....

TABLE GALAXY
ID GalaxyName UniverseId GalaxyStatus ...

等。 请注意,ID是自动生成的,并在创建时增加。 如果不是这种情况,你可以使用像

这样的东西
SELECT city FROM mainTable WHERE {conditions} 

您可以捆绑条件