美文网首页
实现无限级分类的数据库设计及sql查询

实现无限级分类的数据库设计及sql查询

作者: 欣博客 | 来源:发表于2018-07-10 13:41 被阅读0次

创建表

DROP TABLE IF EXISTS `infinite_classification`;
CREATE TABLE `infinite_classification` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `pid` int(11) unsigned DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of infinite_classification
-- ----------------------------
BEGIN;
INSERT INTO `infinite_classification` VALUES (1, '前端', 0);
INSERT INTO `infinite_classification` VALUES (2, '后端', 0);
INSERT INTO `infinite_classification` VALUES (3, '移动', 0);
INSERT INTO `infinite_classification` VALUES (4, 'HTML', 1);
INSERT INTO `infinite_classification` VALUES (5, 'JS', 1);
INSERT INTO `infinite_classification` VALUES (6, '小程序', 1);
INSERT INTO `infinite_classification` VALUES (7, 'JAVA', 2);
INSERT INTO `infinite_classification` VALUES (8, 'PHP', 2);
INSERT INTO `infinite_classification` VALUES (9, 'Go', 2);
INSERT INTO `infinite_classification` VALUES (10, 'Android', 3);
INSERT INTO `infinite_classification` VALUES (11, 'ios', 3);
INSERT INTO `infinite_classification` VALUES (12, 'WEEX', 3);
INSERT INTO `infinite_classification` VALUES (13, 'css', 4);
INSERT INTO `infinite_classification` VALUES (14, 'Sass', 4);
INSERT INTO `infinite_classification` VALUES (15, 'jQuery', 5);
INSERT INTO `infinite_classification` VALUES (16, 'vue', 5);
INSERT INTO `infinite_classification` VALUES (17, 'React', 5);
COMMIT;

查询数据

mysql> select * from infinite_classification
    -> ;
+----+-----------+------+
| id | name      | pid  |
+----+-----------+------+
|  1 | 前端      |    0 |
|  2 | 后端      |    0 |
|  3 | 移动      |    0 |
|  4 | HTML      |    1 |
|  5 | JS        |    1 |
|  6 | 小程序    |    1 |
|  7 | JAVA      |    2 |
|  8 | PHP       |    2 |
|  9 | Go        |    2 |
| 10 | Android   |    3 |
| 11 | ios       |    3 |
| 12 | WEEX      |    3 |
| 13 | css       |    4 |
| 14 | Sass      |    4 |
| 15 | jQuery    |    5 |
| 16 | vue       |    5 |
| 17 | React     |    5 |
+----+-----------+------+
17 rows in set (0.00 sec)

联合查询join

mysql> SELECT t1.name AS lev1,t2.name as lev2,t3.name AS lev3 FROM infinite_classification as t1 LEFT JOIN infinite_classification AS t2 ON t2.pid = t1.id LEFT JOIN infinite_classification AS t3 ON t3.pid = t2.id;
+-----------+-----------+--------+
| lev1      | lev2      | lev3   |
+-----------+-----------+--------+
| 前端      | HTML      | css    |
| 前端      | HTML      | Sass   |
| 前端      | JS        | jQuery |
| 前端      | JS        | vue    |
| 前端      | JS        | React  |
| 前端      | 小程序    | NULL   |
| 后端      | JAVA      | NULL   |
| 后端      | PHP       | NULL   |
| 后端      | Go        | NULL   |
| 移动      | Android   | NULL   |
| 移动      | ios       | NULL   |
| 移动      | WEEX      | NULL   |
| HTML      | css       | NULL   |
| HTML      | Sass      | NULL   |
| JS        | jQuery    | NULL   |
| JS        | vue       | NULL   |
| JS        | React     | NULL   |
| 小程序    | NULL      | NULL   |
| JAVA      | NULL      | NULL   |
| PHP       | NULL      | NULL   |
| Go        | NULL      | NULL   |
| Android   | NULL      | NULL   |
| ios       | NULL      | NULL   |
| WEEX      | NULL      | NULL   |
| css       | NULL      | NULL   |
| Sass      | NULL      | NULL   |
| jQuery    | NULL      | NULL   |
| vue       | NULL      | NULL   |
| React     | NULL      | NULL   |
+-----------+-----------+--------+
29 rows in set (0.00 sec)

mysql> SELECT t1.name AS lev1,t2.name as lev2,t3.name AS lev3 FROM infinite_classification as t1 LEFT JOIN infinite_classification AS t2 ON t2.pid = t1.id LEFT JOIN infinite_classification AS t3 ON t3.pid = t2.id where t3.id = 15;
+--------+------+--------+
| lev1   | lev2 | lev3   |
+--------+------+--------+
| 前端   | JS   | jQuery |
+--------+------+--------+
1 row in set (0.00 sec)

mysql>

相关文章

  • 实现无限级分类的数据库设计及sql查询

    创建表 查询数据 联合查询join

  • 存储及查询无限级分类的数据库设计

    使用数据库时,有时会遇到存储多级分类数据的需求。例如,网上商城需要存放商品分类,商品分类有大类,有小类,大类包含小...

  • thinkphp5的无限级分类

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

  • MySQL的笔记(一)

    SQL语句的定义:简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。 SQL的分类: ...

  • GreenDao

    前言:数据库:MySQL、Oracle、Sqlite 一. 复习SQL语句(结构化查询语言) 1.SQL语句分类 ...

  • python链接数据库

    python链接数据库方法,及基本查询sql执行方法

  • GreenDao

    数据库:MySQL、Oracle、Sqlite 一. 复习SQL语句(结构化查询语言) 1.SQL语句分类 DDL...

  • 商品三级分类-Stream

    一、实现目标 类似商城三级分类展示,一级、二级、三级目录,逐级包含。 二、数据库设计 分类id为每个类别进行标号,...

  • java成长之路-MYSQL学习笔记

    一、数据库:存储、维护和管理数据的集合。DBMS DB二、sql:结构化查询语言sql分类:DDL:数据定义语言,...

  • 数据库的优化方案及如何提高查询效率

    数据库优化方案 优化索引,sql语句,分析慢查询 设计表的时候严格按照数据库设计规范来设计数据库 使用缓存,把京城...

网友评论

      本文标题:实现无限级分类的数据库设计及sql查询

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