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

新建一个部门表

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

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

时间: 2024-11-06 07:26:03

根据父节点编号查询子节点名称,孙节点个数的相关文章

ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关系 : 蓝牙耳机  =>(上一级)  手机配件   =>(上一级)  手机.数码(顶级了) 关联模型 namespace Admin\Model; use Think\Model\RelationModel; class CategoryModel extends RelationModel {

HDU 4417 Super Mario 主席树查询区间小于某个值的个数

#include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> #include<vector> #define LL long long #define rep(i,j,k) for(int i=j;i<=k;i++) #define per(i,j,k) for(int i=j;i>=k;i--) #define pb push_back #d

EasyUI treegrid 实现点击父节点加载子节点

今天在项目中遇到问题,要实现 EasyUI   treegrid 实现点击父节点加载子节点 第一反应是去百度一下,谷歌一下,发现网上的回答不是懒加载就是在onBeforeExpand调用append方法 我决定使用第二种方法,定义treegrid的onBeforeExpand方法,在里面调用appen方法. 然而当我兴冲冲的运行的时候,出问题了, Firefox出现too much recursion异常提示 在网上看了一下这个问题的出现原因,大家都说是,非法使用了js关键字,可是我看了几遍代码

js和jq获取父,兄弟,子节点

1,js获取节点: 父: parentNode 获取已知节点的父节点. 子: childNodes; 得到全部子节点 children 得到全部子节点 firstChild 获得第一个子节点 lastChild 获得最后一个子节点 兄弟:previousSibling 获取已知节点的前一个节点 nextSibling 获取已知节点下一个节点 2,jq获取节点: 父: $('#').parent() 获取上一级的父节点. $('#items').parents('.parent1')获取上面哪一级

js,jq获取父,兄弟,子节点整理

js获取节点 父: parentNode 获取已知节点的父节点. 子: childNodes; 得到全部子节点 children 得到全部子节点 firstChild 获得第一个子节点 lastChild 获得最后一个子节点 兄弟:previousSibling 获取已知节点的前一个节点 nextSibling 获取已知节点下一个节点 jq获取节点 父: $('#').parent() 获取上一级的父节点. $('#items').parents('.parent1')获取上面哪一级父节点都可以

树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (六) 树莓派查询子节点温湿度数据

nrl24l01每次只能发送4个字节,前面说到,第一个字节用于源节点,第二个字节用于目的节点.因此只剩下两个字节用于温度和湿度,一个字节只有八位,需要表示温湿度的正负数,因此每个字节的第一位表示正负符号,后七位表示数据,最大能表示+-127. 树莓派代码 如下: #include <cstdlib> #include <iostream> #include <sstream> #include <string> #include <unistd.h&g

使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例

前言:开发常用的关系型数据库MySQL,mssql,postgre,Oracle,简单的增删改查的SQL语句都与标准SQL兼容,这个不用讲,那么对于迭代查询(不严格的叫法:递归查询)每种数据库都不一样,对于标准SQL语句支持最好的是mssql和postgre,这个不需多讲,我们只讲讲单表情况下的postgre如何通过迭代查询获取有层级关系的数据. 一.表结构举例 MENU表 ID VARCHAR2(32)     N   sys_guid()    节点idFENXID VARCHAR2(32)

比较两个XML节点编号---轻开平台(原WebEasy)字符串计算5

比较两个XML节点编号: @{subNode:n0.x.x(n0.x.x)}--返回比较结果 样例: @{subNode:c0.0(c0.0)} 返回0,表示是同一个节点 @{subNode:c0.0(c0.0.1)} 返回-1,表示是父节点 @{subNode:c0.0.1(c0.0)} 返回1,表示是子节点 @{subNode:c0.1.0(c0.0.1)} 返回differ(不同),表示没有关系 轻松准确在判断两个xml节点的上下层关系 轻松互联网开发平台(Easy Do IT)资源下载

跟我一起读postgresql源码(十)——Executor(查询执行模块之——Scan节点(下))

接前文跟我一起读postgresql源码(九)--Executor(查询执行模块之--Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉. T_SubqueryScanState, T_FunctionScanState, T_ValuesScanState, T_CteScanState, T_WorkTableScanState, T_ForeignScanState, T_CustomScanState, 8.SubqueryScan 节点 SubqueryScan节点的作用是以另