【发布时间】:2017-09-14 05:53:45
【问题描述】:
当给定 table_name (T9) 和 column_name (C1) 时,我需要找出其中包含 column_name (C1) 的最近父表。
例如: T9 的父表路径
T9(C9,C8) -> T8(C8,C7) -> T7(C7,C1) -> T6(C1,C2) -> T5(C1,C3)
T9(C9,C11) -> X8(C11,C7) -> X7(C7,C1) -> T6(C1,C2) -> T5(C1,C3)
T9(C9,C12) -> Y8(C12,C7) -> Y7(C7,C3) -> Y6(C3,C1) -> T5(C1,C3)
T9(C9,C13) -> Z8(C13,C7) -> Z7(C7,C2) -> Z6(C2,C3) -> T5(C3,C1)
上面是从子表T9开始的父子关系 (读取T9通过C8等连接到T8)
现在我需要编写一个应该返回的查询
T9->T8->T7
T9->X8->X7
T9->Y8->Y7->Y6
T9->Z8->Z7->Z6->T5
我正在尝试使用 all_constraints 和 all_cons_cols 并通过路径连接来查找层次关系。如果他们已经创建了这样的查询,有人可以帮助我吗?
【问题讨论】:
-
阅读CONNECT BY
-
您知道引用约束可能在一组列上,而不仅仅是一个列,对吧?当您考虑您的问题时,您是否考虑过这一点?
标签: sql oracle hierarchical-data recursive-query connect-by