递归从父级获取所有子级

nhn9ugyo  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(382)

我有传销结构与多个孩子在x级(不是二叉树营销),所以表组成:parentid和managerid(孩子)。在这张照片上是这样的:

如您所见,manager 1是parentid=0的主管理器。对于manager 1,每个管理器都可以有从0到的子级,manager x处于第4级(级别不受限制)
所以问题是:“我如何才能咨询所有managerid以获得确切的父id”?i、 e.对于2号经理(其中有3个级别和6个经理)或6号经理(其中有2个级别和5个经理)。
数据库:mysql

CREATE TABLE `accounts` (
  `id` int(11) NOT NULL,
  `managerid` varchar(32) COLLATE utf8_unicode_ci DEFAULT '',
  `parentid` varchar(32) COLLATE utf8_unicode_ci DEFAULT '',
  `name` varchar(256) COLLATE utf8_unicode_ci DEFAULT '',
  `regdate` date DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

edit:所以我正在寻找将返回parentid的所有managerid的查询(不使用mysql存储过程)。i、 e.简单插入

id,managerid,parentid,name,regdate
1,1000,0,name1,2018-12-10
2,1001,1000,name2,2018-12-10
3,1002,1001,name3,2018-12-10
4,1003,1002,name4,2018-12-10
5,1004,1003,name5,2018-12-10
6,1005,1004,name6,2018-12-10
7,1006,1005,name7,2018-12-10
8,1007,1006,name8,2018-12-10
9,1008,1007,name9,2018-12-10
10,1009,1008,name10,2018-12-10
11,1010,1009,name11,2018-12-10
12,1011,1010,name12,2018-12-10
13,1012,1011,name13,2018-12-10
14,1013,1012,name14,2018-12-10
15,1014,1013,name15,2018-12-10
16,1015,1014,name16,2018-12-10
17,1016,1015,name17,2018-12-10
18,1017,1016,name18,2018-12-10
19,1018,1017,name19,2018-12-10

所以在这个例子中,manager=1000有18个孩子manager 1005有13个孩子
我需要输入parentid=1005(对于manager 1005)计算他的所有孩子并得到number=13别忘了parentid=1005可能有不同级别的孩子(从1到无穷大)。我需要数一数他所有级别的孩子(见上图“经理2”)

yduiuuwa

yduiuuwa1#

有两种方法可以解决我的问题。第一个:与递归(mysql 8版本提供)一起使用,或者使用存储过程。您可以在这里找到代码示例和所有其他内容:https://guilhembichot.blogspot.com/2013/11/with-recursive-and-mysql.html

相关问题