我们有一个内部表格,作为以下格式的分层数据。 Items
是包含项列表的父表。但是,项目之间的关系保留在std_item_rel
表
约束:
items.item_id(PK) = std_item_rel.std_item_down(PK)(FK)
items.item_id_sd(PK) = std_item_rel.item_id_sd_dwn(PK)(FK)
std_item_rel.std_item_up (fk) to std_item_rel.std_item_dwn
std_item_rel.item_id_sd_up (fk) to std_item_rel.item_id_sd_dwn
如何编写查询以从示例模式中获取项123
的所有从属值?
项
item_id | item_id_sd| item_desc
----------------------------
123 | A | Some description
std_item_rel
std_item_dwn | item_id_sd_dwn | item_id_sd_up | std_item_up
------------------------------------------------------------
123 | A | null | null
125 | C | A | 123
129 | C | C | 125
更新 我得到的错误是:
ORA-01436: CONNECT BY loop in user data
01436. 00000 - "CONNECT BY loop in user data"
*Cause:
*Action:
通过在nocycle
子句中添加connect by
param来修复它。
答案 0 :(得分:1)
CONNECT BY
应该允许使用相当简单的解决方案:
SELECT std_item_down
FROM std_item_rel
CONNECT BY std_item_up = PRIOR std_item_down
START WITH std_item_down = 123