mysql 如何分层查询出树型结构

图片说明

如上图 , 要做一个列表。查出的数据需要 分三个级别,其中二级在一级下显示,三级在二级下显示。
比如:电脑是一级 ,然后紧接着 电脑整机 再 台式~~~

更像一个树形对吗?为什么要做成列表? 还带分页
因为设计如此。
所以此帖只讨论 如何 用sql 查出这样的结果。
是mysql 数据库

你自己不是说是一个树状图吗?还有等级;然后设计就很简单啦。在数据库表中,弄2个关键字段——等级(level)和父类(parentId);举例——》电脑的等级是0,他的父类是自己(电脑的ID);笔记本电脑的等级是1,他的父类是电脑(电脑ID)。。。。。

分层查询这样: 表头—— 一级 二级 三级 ...

select数据集 循环,判断 各个级别, 然后得出结果集

按照你的需求 难不是难在sql上,而是难在rm上,怎么将数据映射到pojo上(特指JAVA)。
简单来说 select * from xxx 就可以 只要是数据的处理
当然 你也可以这样干

 create table menu(
        id int primary key, 
        name varchar(20),
        pid int references menu(id)
    )
    select 
            *
    from
        menu f
    inner join menu s  on f.id = s.pid
    inner join menu t on s.id = t.pid


我用的是zTree这种插件,他是帮你显示好你要的树型结构图,其他的easyUI这种工具也可以实现你想要的形状。
说明下,下面的代码需要jquery类库的支持,如果有兴趣,还是去看看zTree的api文档
关于sql的部分,其实就是一句查询语句,其他的就没什么了

    <script type="text/javascript">
 var setting = {
        data : {
            key: {
                children: "children",
                name: "mname",//这里是明他的名称
            },
            simpleData: {
                enable: true,
                idKey: "mid",//这里是你的主键

                pIdKey: "mpid",//这里是你的父键
            },
            keep: {
                parent: false,
                leaf: false
            }
        },


    };

    $(function () {
        $.post(
            "<%=request.getContextPath() %>/dept/menu.action",
            {},
            function (json) {

                $.fn.zTree.init($("#treeDemo"), setting, json);


            },
            "json"
        );


    });

    </script>
</head>
<body>
        <url id="treeDemo" class="ztree"></url>
</body>