【发布时间】:2020-08-20 14:45:25
【问题描述】:
现在正在处理一个查询,我们希望了解哪个企业为我们提供了最多的下游订单。我在这里整理了一个非常基本的表格,用于演示目的,列出了 4 家企业。 Bar 和 Donut 最终都是由 Foo 推荐的,我希望能够将 Foo 展示为一家企业已经产生了 X 个订单。显然,获取 Foo(来自 Bar)和 Bar(来自 Donut)的单一推荐是简单的连接。但是如何从 Bar 回到 Foo 呢?
我要补充一点,我在这个 AM 上做了更多的谷歌搜索,发现了一些关于顶级父级的非常相似的问题,并且大多数回复都建议递归 CTE。自从我深入研究 SQL 内容以来已经有一段时间了,但 8 年前我知道这些并不太流行。还有其他方法吗?下单时将父 ID 存储在订单表上也许更好?
+----+--------+--------------------+
| Id | Name | ReferralBusinessId |
+----+--------+--------------------+
| 1 | Foo | |
| 2 | Bar | 1 |
| 3 | Donut | 2 |
| 4 | Coffee | |
+----+--------+--------------------+
【问题讨论】:
-
使用 Postgresql 你可以使用
WITH RECURSIVE... -
@RSolberg 您使用的是什么版本的 SQL?
-
@JasonTowne 我很确定它是版本 12 (SQL Azure)
-
@RSolberg 我的答案中的分层查询是否可以显示从
Donut到Foo的关系路径?
标签: sql join azure-sql-database