sql - 将子关系映射到父关系的复杂递归调用(SQL/Pyspark)
问题描述
您好,我有两个包含对象名称及其 rid 的表,以及另一个包含 rid 与其子对象之间关系的表。
表格1
RID | 姓名 |
---|---|
rd.123 | 果酱 |
------ | --- |
rd.890 | 火腿 |
这仅包含项目名称和项目 RID 之间的链接。需要注意的一点是,它不包含我拥有的每个 RID 的名称,因为有些没有名称。这将被视为一切的基础父级。或根节点。
我的第二个表是这样设置的每个父子关系的列表
RID | Child_RID |
---|---|
rd.123 | rd.234 |
rd.123 | rd455 |
rd.234 | rd.777 |
rd.234 | rd.789 |
rd.234 | rd.667 |
rd.667 | rd.544 |
现在我讨厌的一件事是孩子也会出现在父母一方,这会显示他们的孩子。所以这将有一个像 setup 一样的树节点。我要做的是制作另一个表,显示基本节点(来自 table1 的节点)及其所有连接的子节点,基本上构建一个节点树。我尝试合并和加入,但它没有产生我真正想要的。它接近但不正确。
我想要的结果是这样的
姓名 | RID | Child_1 | Child_2 | Child_3 | 等 |
---|---|---|---|---|---|
果酱 | rd.123 | rd.454 | rd.456 | 无效的 | 无效的 |
果酱 | rd.123 | rd.444 | rd.677 | rd.999 | rd.222 |
果酱 | rd.123 | rd.444 | rd.677 | rd.409 | 无效的 |
果酱 | rd.123 | rd.444 | rd.677 | rd.544 | rd.211 |
火腿 | rd.890 | rd.311 | 无效的 | 无效的 | 无效的 |
我想对第一列中的每个对象执行此操作,以在第二个表中查找所有父子关系。我愿意以两种方式做到这一点。SQL 或 Pyspark 对我来说很好,因为我可以将它们混合使用。什么都更容易完成这项任务。
解决方案
推荐阅读
- javascript - 如何从主刀片视图中获取附加文本框名称并插入laravel中的控制器
- python - 使用python套接字连接到服务器,接收数据并重新发送到服务器
- c++ - 带get函数的无限循环
- entity-framework - WebApi 支持 Range 请求,无需多次查询数据库
- firebase - Firebase 功能问题?
- javascript - 如何将脚本导入 .vue 文件?
- heroku - 如何在 Heroku 中使用 JavaSpark 部署 WebApplication,该 JavaSpark 具有用于 WebComponents 的 StaticFilesFolder
- c - extra spaces written in r+ mode
- corda - 如何获得两个参与者之间的数字签名,其余的只能看到账本更新而没有获得签名?
- dart - 使扩展的 FAB 居中