python 或 R 代码调用 mySQL 进行分层和递归查询
python or R code call to mySQL for hierarchical and recursive queries
我需要根据 parentID 和 childID 的 table 创建一个父子树,其中树可能有多个级别,所以我需要自己加入 table 多个级别就像树一样,虽然我不知道有多少层。此处讨论了 SQL 而非 mySQL 的可行解决方案:Simplest way to do a recursive self-join in SQL Server?,但 mySQL 不支持分层联接。
有没有一种方法可以编写 Python 或 R 脚本环绕 mySQL 代码来执行此操作?
一个后续问题是我想可视化树并使其具有交互性(查看者可以添加/删除条目),并且树可能会很大所以可能具有缩放功能/只能看到一部分一次处理一棵树 - 最好的方法是什么?我正在考虑在 R 中使用 shiny 包。
谢谢!
假设 table 与您提到的 link 相同。假设此数据位于数据框 df 中,并且您想为 PersonID 1 (CJ)
构建层次结构
PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
5 YT NULL
6 IS 5
你可以写一个像下面这样的函数,它会一直循环查找,除非树停止生长。我还没有测试过这个,所以可能有一些错误,但它给出了一个大概的想法。
buildTree <- function(df,id) {
tree <- df[df$PersonID == id,]
len <- nrow(tree)
while(1){
tree <- df[df$ParentID %in% tree$PersonID,]
if(nrow(tree) == len) break;
len <- nrow(tree)
}
}
tree <- buildTree(df,1)
我需要根据 parentID 和 childID 的 table 创建一个父子树,其中树可能有多个级别,所以我需要自己加入 table 多个级别就像树一样,虽然我不知道有多少层。此处讨论了 SQL 而非 mySQL 的可行解决方案:Simplest way to do a recursive self-join in SQL Server?,但 mySQL 不支持分层联接。
有没有一种方法可以编写 Python 或 R 脚本环绕 mySQL 代码来执行此操作?
一个后续问题是我想可视化树并使其具有交互性(查看者可以添加/删除条目),并且树可能会很大所以可能具有缩放功能/只能看到一部分一次处理一棵树 - 最好的方法是什么?我正在考虑在 R 中使用 shiny 包。
谢谢!
假设 table 与您提到的 link 相同。假设此数据位于数据框 df 中,并且您想为 PersonID 1 (CJ)
构建层次结构PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
5 YT NULL
6 IS 5
你可以写一个像下面这样的函数,它会一直循环查找,除非树停止生长。我还没有测试过这个,所以可能有一些错误,但它给出了一个大概的想法。
buildTree <- function(df,id) {
tree <- df[df$PersonID == id,]
len <- nrow(tree)
while(1){
tree <- df[df$ParentID %in% tree$PersonID,]
if(nrow(tree) == len) break;
len <- nrow(tree)
}
}
tree <- buildTree(df,1)