Sql 查询表中的分层项
我们在内部有一个表,它是以下格式的分层数据<代码>项目是包含项目列表的父表。但是,项目之间的关系保存在Sql 查询表中的分层项,sql,oracle,hierarchical-data,Sql,Oracle,Hierarchical Data,我们在内部有一个表,它是以下格式的分层数据项目是包含项目列表的父表。但是,项目之间的关系保存在std\u item\u rel表中 约束条件: items.item\u id(PK)=std\u item\u rel.std\u item\u down(PK)(FK) items.item\u id\u sd(PK)=std\u item\u rel.item\u id\u sd\u dwn(PK)(FK) std\u item\u rel.std\u item\u up(fk)至std\u
std\u item\u rel
表中
约束条件:
items.item\u id(PK)=std\u item\u rel.std\u item\u down(PK)(FK)
items.item\u id\u sd(PK)=std\u item\u rel.item\u id\u sd\u dwn(PK)(FK)
std\u item\u rel.std\u item\u up(fk)至std\u item\u rel.std\u item\u dwn
std_item_rel.item_id_sd_up(fk)至std_item_rel.item_id_sd_dwn
123
的所有从属值
项目
item_id | item_id_sd| item_desc
----------------------------
123 | A | Some description
std\u项目相关
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:
通过在
connect by
子句中添加nocycle
参数来修复此问题。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
如果我必须连接多个列怎么办?它有相同的语法吗?(为了简单起见,我隐藏了PK的其他列)我猜不出您的实际问题:-)语法基本相同,但是
connectby
通常不是很直观。所以,也许你可以在你的问题中添加一些额外的信息?修改为有更多的栏。。我在sql developer中尝试过,它似乎向我展示了一些使用关键字connect的编译错误。。我们使用oracle 10gbtwn@Zeus:如果您尝试了某项操作并出现错误,您还应在修改的问题中包含该代码和确切的错误消息。