gpt4 book ai didi

用于解决数据库中的传递依赖项的 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 02:30:13 28 4
gpt4 key购买 nike

SQLFIddle link for this data.

假设我有一个具有以下结构的表:

create table rd(r1 number,r2 number, primary key (r1,r2));

样本数据:
| R1 | R2 |
-----------
| 1 | 2 |
| 1 | 4 |
| 2 | 3 |
| 3 | 1 |
| 4 | 5 |

这意味着 R1 与 R2 双向相关。因此,如果数据库中有 1,3 的条目,则不会有 3,1 之类的条目。

根据以上数据:
1 与 2,4,3 直接相关。并且 4 也与 1 相关。因此,通过传递依赖,1 和 5 也被认为是相关的。

预期结果:
| R1 | R2 |
-----------
| 1 | 2 |
| 1 | 4 |
| 1 | 3 |
| 1 | 5 |

任何人都可以为此编写 SQL 查询吗?

最佳答案

当您运行 Oracle 11g(如果它恰好是第 2 版)时,作为方法之一,您可以使用递归公用表表达式(也称为递归子查询分解)to get desired result .

SQL> with rcte(r1, r2, lv, root) as(
2 select r1
3 , r2
4 , 0 lv
5 , r1
6 from rd
7 where r1 = 1
8
9 union all
10
11 select t.r1
12 , t.r2
13 , lv + 1
14 , q.root
15 from rd t
16 join rcte q
17 on (t.r1 = q.r2)
18 )
19 search depth first by r1 set s
20 cycle r1 set is_cycle to 'y' default 'n'
21
22 select root
23 , r2
24 from rcte
25 where is_cycle = 'n'
26 and r2 <> root
27 ;

ROOT R2
---------- ----------
1 2
1 3
1 4
1 5

关于用于解决数据库中的传递依赖项的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548988/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com