首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将具有简单父子关系的mysql表转换为嵌套集合?

如何将具有简单父子关系的mysql表转换为嵌套集合?
EN

Stack Overflow用户
提问于 2013-07-24 04:30:15
回答 2查看 697关注 0票数 0

我有一个很大的mysql表--基本上是稍微修改了一下的LDAP转储。12万名员工。

很多事情都需要这个表,但是我有一个任务是处理服务器--递归查询。每个员工都有empl。其所在行的id和主管id。轻松的父子关系。然而,我们拥有的一个应用程序是一个群发电子邮件应用程序。我们使用LDAP表来搜索给定经理下的所有员工。嗯,这可能会深入6-10层,并包括10-20K行。它是强烈的。我目前的系统不能处理大型查询。

那么如何将父子关系自动化到一个嵌套的集合中呢?这真的超出了我在mysql中所做的事情,所以任何帮助都是非常感谢的。

另外,这个问题怎么还没有被问过100次呢?

EN

回答 2

Stack Overflow用户

发布于 2013-07-24 04:35:13

你可能想看看这篇文章:

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

票数 0
EN

Stack Overflow用户

发布于 2013-07-24 06:45:56

我构建了一个存储过程来完成这项工作。这从主管id开始,并查找所有子项及其子项。当心循环关系!

假设: Employee表具有PID (person)和SupID (supervisor)

Emailtable有PID,PersonName,Email,Nodelevel (int),从空开始。

调用Nodeup(1,SupervisorID) ( curnode int,IN supid int中的参数)

代码语言:javascript
运行
复制
BEGIN
#Routine body goes here...
declare newnode int;
if curnode = 1 then
insert emailtable (pid,personname,email,nodelevel) select pid,personname,email,1 from  employees where pid = superid;
end if;

insert emailtable(personname,pid,email,nodelevel) select personname,pid,email,curnode+1 
        from employees where supid in (select pid from emailtable where curnode = emailtable.nodelevel);
    set newnode = (select max(nodelevel) from emailtable);
    if newnode > curnode then
        call nodeup(Newnode,0);
    end if;
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17820460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档