如何进行多级嵌套循环连接?
How do I do a multiple level Nested Loop Join?
我确定这一定是一个常见的编码问题,但我什至不知道如何称呼它。
对于任何给定的人,我想找到他们的团队 - 现在团队中可能有团队,也可能没有 - 这是不可预测的。
所以我可以只做嵌套循环,这很好,但我想知道是否有更聪明、更奇特的方法来做这件事?我最终会一遍又一遍地迭代相同的数据集(大约 10,000 条记录,代表可能的 7 个层次结构级别),这不是最有效的。
MS SQL 服务器 2012? Python3.10?
PersonID
PersonName
Lev3
Lev2
Lev1
ManagerID
4703
John
Department A
Group D
Division A
5763
4367
Janet
Department B
Group E
Division B
4744
7033
Bob
Department C
Group D
Division A
5763
5763
Sarah
None
Group D
Division A
5224
4744
Phil
None
Group E
Division B
5224
5224
Petra
None
None
None
None
假设我想找到 Petra 的团队 - ID 5224 - 应该是每个人,因为她是食物链的顶端。但是菲尔? ID 4744 - 那只是珍妮特。与团队中同时拥有 John 和 Bob 的 Sarah - ID 5763 相比。
此 SQL 代码将仅标识直属团队 - 而不是团队中的团队。
SELECT
M.[Employee Name], S.[Employee Name]
FROM [Staff] M
JOIN [Staff] S
ON M.PositionID = S.ManagerPosition
WHERE
M.PositionID > 0
ORDER BY
m.[Employee Name]
我怎么能在嵌套循环中使用嵌套循环 - 最多 7 层深?
您将需要使用递归 CTE。阅读本文,看看是否可以将其应用到您的案例中:https://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/
我确定这一定是一个常见的编码问题,但我什至不知道如何称呼它。
对于任何给定的人,我想找到他们的团队 - 现在团队中可能有团队,也可能没有 - 这是不可预测的。
所以我可以只做嵌套循环,这很好,但我想知道是否有更聪明、更奇特的方法来做这件事?我最终会一遍又一遍地迭代相同的数据集(大约 10,000 条记录,代表可能的 7 个层次结构级别),这不是最有效的。
MS SQL 服务器 2012? Python3.10?
PersonID | PersonName | Lev3 | Lev2 | Lev1 | ManagerID |
---|---|---|---|---|---|
4703 | John | Department A | Group D | Division A | 5763 |
4367 | Janet | Department B | Group E | Division B | 4744 |
7033 | Bob | Department C | Group D | Division A | 5763 |
5763 | Sarah | None | Group D | Division A | 5224 |
4744 | Phil | None | Group E | Division B | 5224 |
5224 | Petra | None | None | None | None |
假设我想找到 Petra 的团队 - ID 5224 - 应该是每个人,因为她是食物链的顶端。但是菲尔? ID 4744 - 那只是珍妮特。与团队中同时拥有 John 和 Bob 的 Sarah - ID 5763 相比。
此 SQL 代码将仅标识直属团队 - 而不是团队中的团队。
SELECT
M.[Employee Name], S.[Employee Name]
FROM [Staff] M
JOIN [Staff] S
ON M.PositionID = S.ManagerPosition
WHERE
M.PositionID > 0
ORDER BY
m.[Employee Name]
我怎么能在嵌套循环中使用嵌套循环 - 最多 7 层深?
您将需要使用递归 CTE。阅读本文,看看是否可以将其应用到您的案例中:https://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/