码迷,mamicode.com
首页 > 其他好文 > 详细

根据父节点编号查询子节点名称,孙节点个数

时间:2019-07-11 18:46:06      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:insert   nbsp   一个   prim   dep   span   要求   根据   tab   

新建一个部门表

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 标识列,
  `name` varchar(255) NOT NULL COMMENT 名称,
  `pid` int(11) NOT NULL COMMENT 父级编号,
  `num` int(11) NOT NULL DEFAULT 100 COMMENT 排序号,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT=部门表;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES (1, 总部, 0, 100);
INSERT INTO `dept` VALUES (2, 市场, 1, 100);
INSERT INTO `dept` VALUES (3, 研发, 1, 100);
INSERT INTO `dept` VALUES (4, 财务, 1, 100);
INSERT INTO `dept` VALUES (5, 设计, 3, 100);
INSERT INTO `dept` VALUES (6, 运维, 3, 100);
INSERT INTO `dept` VALUES (7, 测试, 3, 100);
INSERT INTO `dept` VALUES (8, 开发, 3, 100);
INSERT INTO `dept` VALUES (9, 人事, 1, 100);
INSERT INTO `dept` VALUES (10, 行政, 1, 100);
INSERT INTO `dept` VALUES (11, 营销, 2, 100);
INSERT INTO `dept` VALUES (12, 策划, 2, 100);
INSERT INTO `dept` VALUES (13, 售后, 2, 100);
INSERT INTO `dept` VALUES (14, Java, 8, 100);
INSERT INTO `dept` VALUES (15, 大数据, 8, 100);
INSERT INTO `dept` VALUES (16, .Net, 8, 100);
INSERT INTO `dept` VALUES (17, 美工, 5, 100);
INSERT INTO `dept` VALUES (18, 前端, 5, 100);

顶级的pid的值为0

技术图片

 

需求是根据父节点编号查询子节点名称及其孙节点个数:要求一条sql语句完成

-- 根据父节点编号,查询子节点名称,及其孙节点个数
        SELECT
            id,
            dept1.pid,
            name,
            ifnull(children,0) children
FROM ( SELECT
            id,
            pId,
            name
from dept
where pid = 3 ) dept1
LEFT JOIN (SELECT pid,count(*) children FROM dept 
where pid in (SELECT id FROM dept where pid = 3)
GROUP BY pid) dept2
on dept1.id = dept2.pid

 

技术图片

 

根据父节点编号查询子节点名称,孙节点个数

标签:insert   nbsp   一个   prim   dep   span   要求   根据   tab   

原文地址:https://www.cnblogs.com/liuxiutianxia/p/11171847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!