首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有坏sql数据库的3级菜单

带有坏sql数据库的3级菜单
EN

Stack Overflow用户
提问于 2015-03-10 14:05:09
回答 1查看 36关注 0票数 0

我必须做一个垂直的3级菜单的基础上的数据库项目,但不幸的是,没有组织“parent_id”.

数据库看起来像:

代码语言:javascript
复制
 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
        • city2

代码语言:javascript
复制
    - planet2 
        - city1 

代码语言:javascript
复制
- galaxy2 
    - planet1 
        - city1  

代码语言:javascript
复制
    - planet2 
        - city1    
        - city2

  • univers2
    • galaxy1
      • planet1
        • city1

代码语言:javascript
复制
- galaxy2
- galaxy3 
    - planet1

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-03-10 14:10:38

允许使用链接表吗?它不需要发送parent_id作为参数。在此基础上,它将创建一个清晰而简单的4个表的结构,这是正确的形式,不重复数据。

例如:

代码语言:javascript
复制
TABLE UNIVERSE
ID UniverseName UniverseStatus ....

TABLE GALAXY
ID GalaxyName UniverseId GalaxyStatus ...

注意ID是自动生成的,并在创建时增加.如果不是这样的话,你可以用这样的方法

代码语言:javascript
复制
SELECT city FROM mainTable WHERE {conditions} 

你可以把条件捆绑在一起

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28965845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档