美文网首页
四、MySQL无限级分类表设计

四、MySQL无限级分类表设计

作者: Lord丶轩莫言弃 | 来源:发表于2019-07-30 09:54 被阅读0次

1、概述

  • 在日常使用的网站中,商品分类一般做无限级分类,才可以满足业务需求

2、类别表基本字段

  • type_id:分类id
  • type_name:分类名称
  • parent_id:父类id

3、创建类别表

CREATE TABLE tdb_goods_types(
    type_id   SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    type_name VARCHAR(20) NOT NULL,
    parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0
);

4、插入记录

INSERT tdb_goods_types(type_name,parent_id) VALUES('家用电器',DEFAULT);
INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑、办公',DEFAULT);
INSERT tdb_goods_types(type_name,parent_id) VALUES('大家电',1);
INSERT tdb_goods_types(type_name,parent_id) VALUES('生活电器',1);
INSERT tdb_goods_types(type_name,parent_id) VALUES('平板电视',3);
INSERT tdb_goods_types(type_name,parent_id) VALUES('空调',3);
INSERT tdb_goods_types(type_name,parent_id) VALUES('电风扇',4);
INSERT tdb_goods_types(type_name,parent_id) VALUES('饮水机',4);
INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑整机',2);
INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑配件',2);
INSERT tdb_goods_types(type_name,parent_id) VALUES('笔记本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES('超级本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES('游戏本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES('CPU',10);
INSERT tdb_goods_types(type_name,parent_id) VALUES('主机',10);

5、自身连接

  • 同一个数据表对其自身进行连接

6、查找所有分类及其父类

SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS  p ON s.parent_id = p.type_id;

7、查找所有分类及其子类

SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types AS p LEFT JOIN tdb_goods_types AS  s ON s.parent_id = p.type_id;

8、查找所有分类及其子类的数目

SELECT p.type_id,p.type_name,count(s.type_name) AS children_count FROM tdb_goods_types AS p LEFT JOIN tdb_goods_types AS s ON s.parent_id = p.type_id GROUP BY p.type_name ORDER BY p.type_id;

9、MySQL不具备递归查询的能力,需要通过程序实现。

相关文章

  • 四、MySQL无限级分类表设计

    1、概述 在日常使用的网站中,商品分类一般做无限级分类,才可以满足业务需求 2、类别表基本字段 type_id:分...

  • thinkphp5的无限级分类

    数据库的设计: Goods_type分类表 无限级分类的读取,关键代码如下: $data=db('goods_ty...

  • thinkphp5 + h-ui无限级分类实现

    今天折腾了一遍无限级分类,记录一下 之前设计无限级分类都是两张表相互关联,这次试了用一张表 (还不会用markdo...

  • MySQL 锁之二——表锁

    1、概述 MySQL 表级锁是以单个表为粒度的锁,InnoDB 和 MyISAM 引擎都支持表级锁; 2、表锁分类...

  • Hibernate单表内做无限级分类或配置数据库外键关联

    当前需求:表A与表B一对多的关系,表B内做无限级分类。

  • MySQL 冷门技术总结

    1.mysql 空间位置计算 查询无限分类所有父级 按条件汇总,聚合,去重统计各个数据 mysql查看进程

  • Mysql的锁

    MySql锁的分类 Mysql里的锁大致可以分为全局锁、表级锁和行锁三类。 全局锁 Mysql 增加全局锁的方法:...

  • MySQL的锁

    1.职责分类 共享锁 - 读锁独占锁(排它锁) - 写锁 2.粒度分类 1.行级锁2.表级锁注意:在mysql中只...

  • MySQL锁篇

    1 MySQL锁介绍 2 MySQL表级锁 2.1 表级锁介绍 ​ 表级锁由SQL layer实现。M...

  • 无限级分类

    1.有两种实现方式:a.递归方式,b.迭代方式; a.递归方式:(实现家谱树和子孙树) 家谱树: /** ...

网友评论

      本文标题:四、MySQL无限级分类表设计

      本文链接:https://www.haomeiwen.com/subject/pjhgrctx.html